在 libtool 命令行上重复库
Posted
技术标签:
【中文标题】在 libtool 命令行上重复库【英文标题】:Repeating libs on libtool command line 【发布时间】:2012-04-06 23:32:55 【问题描述】:我正在使用 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
请注意,对库的第二次遍历已消失;我收到一堆链接器错误。当我手动运行带有额外 -l
标志的 gcc 命令行时,它可以工作。
如何让 libtool 将我请求的所有库传递给 gcc?
【问题讨论】:
这么多层不支持循环依赖(从动态库开始),所以 libtool 甚至没有尝试它的意义。 【参考方案1】:如何让 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% 的情况下都是错误的,并尽量避免它像瘟疫一样。)
【讨论】:
以上是关于在 libtool 命令行上重复库的主要内容,如果未能解决你的问题,请参考以下文章