我正在使用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?
答案 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%的时间都是错误的,并试图像瘟疫一样避免它。)