Linker 在libtool命令行上重复libs

Linker 在libtool命令行上重复libs,linker,automake,libtool,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 请注意,LIB的第二次传递已结束;我收到一堆链

我正在使用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
请注意,LIB的第二次传递已结束;我收到一堆链接器错误。当我使用额外的
-l
标志手动运行gcc命令行时,它可以工作

如何使libtool将我请求的所有lib传递给gcc?

如何使libtool将我请求的所有lib传递给gcc

我不知道怎么做。但是,请注意,如果您在使用GNULD(或gold)的系统上,您可以使用

-Wl,--start-group -lA -lB -lC -Wl,--end-group
也许libtool会让这些不受干扰?唉,libtool2.2.6b在所有库之前移动
-Wl,--end group
-(

这个粗俗的黑客做到了:

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

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

如此多的层(从动态库开始)不支持循环依赖,因此libtool甚至没有必要尝试它。