重复使用库在libtool命令行上

4
我正在使用automake,并获得以下类似的libtool调用:
/bin/sh ../libtool --tag=CC --mode=link gcc -o test_foo test_foo.o -lA -lB -lC -lA -lB -lC

请注意,这些库(超出我的控制范围)存在循环依赖关系,需要多次提及。不幸的是,似乎libtool将对多个库的请求折叠为单个请求,并运行:
gcc -o test_foo test_foo.o -lA -lB -lC

请注意,第二遍对库的遍历已经消失了;我得到了一堆链接器错误。当我手动运行带有额外-l标志的gcc命令行时,它可以正常工作。
我该如何让libtool将我请求的所有库都传递给gcc?

1
不支持在许多层(从动态库开始)上进行循环依赖,因此 libtool 甚至都没有尝试的必要。 - jørgensen
1个回答

6

如何让libtool将我请求的所有库传递给gcc?

我不知道怎么做。但请注意,如果您在使用GNU-ld(或gold)的系统上,则可以通过以下方式实现相同的结果:

-Wl,--start-group -lA -lB -lC -Wl,--end-group

也许libtool不会干扰这些?但是,遗憾的是,libtool 2.2.6b将-Wl,--end-group移到所有库之前 ;-(

这个粗暴的hack解决了这个问题:

-Wl,--start-group,-lA,-lB,-lC,--end-group

我发现libtool在99%的情况下都会出错,所以我像避开瘟疫一样尽量避免使用它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接