在 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 命令行上重复库的主要内容,如果未能解决你的问题,请参考以下文章

在命令行上获取当前年份[重复]

从脚本在命令行上运行 MySQL 查询 [重复]

OS X 安装命令行看图工具 chafa 以及其依赖libtool

命令行上的 Maven 依赖项更新

如何在 Windows 命令行上测量命令的执行时间?

在 Linux 命令行上检查 postgresql jdbc 驱动程序版本的命令是啥?