我正在使用 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 将我请求的所有库传递给 gcc?
最佳答案
How can I make libtool pass all the libs I've requested to 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% 的情况下都是错误的,并尽量避免它像瘟疫一样。)
关于linker - 在 libtool 命令行上重复库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10050389/