默认情况下,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/