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



默认情况下,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 链接到静态库可能不起作用,具体取决于静态库中对象的构建方式。

最新更新