默认情况下,libtool 创建了两个版本的库 - 静态版本和动态库版本,这就是我所需要的。我还需要我的库,无论它是什么类型 - 静态或动态,都将静态链接到某些依赖项(几个 .a 存档 - lib1.a、lib2.a 和 lib3.a(。我尝试了--whole-archive
这样的选项_LDFLAGS
:
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 链接到静态库可能不起作用,具体取决于静态库中对象的构建方式。