c++ - GNU Automake - 构建与其依赖项静态链接的动态库

标签 c++ makefile gnu-make automake

默认情况下,libtool 创建两个版本的库 - 静态版本和动态版本,这正是我所需要的。我还需要我的库,无论它是什么类型——静态或动态,都将针对某些依赖项进行静态链接(几个 .a 文件——lib1.a、lib2.a 和 lib3.a)。我在 _LDFLAGS 中尝试了 --whole-archive 选项,如下所示:

mylib_la_LDFLAGS=...-Wl,--whole-archive, -llib1 -llib2 -llib3 --no-whole-archive ....

但是在 Makefile 生成之后,这些标志被移动到命令的末尾,因此没有任何效果:

...-llib1 -llib2 -lib3.... -Wl,--whole-archive, --no-whole-arvhive,...

我还尝试在 _LDADD 中提供 --static 标志,如下所示:

mylib_la_LDFLAGS=...--static -llib1 -llib2 -llib3 ....

并且libtool在创建动态库时会省略该标志(静态库即可)。

应该如何实现?

最佳答案

mylib_la_LIBADD=-llib1 -llib2 -llib3...

应该可以。将 DSO 链接到静态库可能不起作用,具体取决于静态库中对象的构建方式。

关于c++ - GNU Automake - 构建与其依赖项静态链接的动态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33024554/

相关文章:

c++ - 在 C++/Qt 中拆分 Lua 函数调用的混合字符串/数字参数列表

c++ - live555流媒体转发使用方法

makefile - make 中的动态目标

C++如何调用父类的友元函数?

c++ - #define MY_INT 与 const int MY_INT

ubuntu - 安装 Erlang/OTP 时出现问题

makefile - 其中目标全递归在 makefile 中给出

string - GMSL seq函数的实现

makefile - 仅当目标存在时才执行的 GNU Make 规则?

使用 Makefile 中的通用目标进行 make 的 Bash 补全