bst*_*rre 4 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
Run Code Online (Sandbox Code Playgroud)
请注意,库(超出我的控制范围)具有循环依赖关系,需要多次提及它们。不幸的是,似乎 libtool 将对库的多个请求合并为一个请求,并且它运行:
gcc -o test_foo test_foo.o -lA -lB -lC
Run Code Online (Sandbox Code Playgroud)
请注意,对 libs 的第二次传递消失了;我收到一堆链接器错误。当我手动运行带有额外-l标志的gcc 命令行时,它可以工作。
如何让 libtool 将我请求的所有库传递给 gcc?
如何让 libtool 将我请求的所有库传递给 gcc?
我不知道该怎么做。但是请注意,如果您使用的是使用 GNU-ld(或 gold)的系统,则可以使用
-Wl,--start-group -lA -lB -lC -Wl,--end-group
Run Code Online (Sandbox Code Playgroud)
也许 libtool 会让这些不受干扰?唉,libtool 2.2.6b-Wl,--end-group在所有库之前移动;-(
这个粗暴的黑客是这样做的:
-Wl,--start-group,-lA,-lB,-lC,--end-group
Run Code Online (Sandbox Code Playgroud)
(我发现libtool99% 的情况下这是错误的,并尽量避免它像瘟疫一样。)