在libtool命令行上重复libs

时间:2012-04-06 23:32:56

标签: linker automake libtool

我正在使用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

请注意,libs的第二次传递已经消失;我收到一堆链接器错误。当我使用额外的-l标志手动运行该gcc命令行时,它可以正常工作。

如何让libtool将我要求的所有lib传递给gcc?

1 个答案:

答案 0 :(得分:4)

  

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

我不知道该怎么做。但请注意,如果您使用的是使用GNU-ld(或gold)的系统,则可以使用

获得相同的结果
-Wl,--start-group -lA -lB -lC -Wl,--end-group

也许libtool会让这些不受干扰?唉,libtool 2.2.6b在所有库之前移动-Wl,--end-group; - (

这种严重的黑客做到了:

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

(我发现libtool在99%的时间都是错误的,并试图像瘟疫一样避免它。)