linker - 在 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

请注意,对 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/

相关文章:

internationalization - 如何使用 Automake 将 gettext mo 文件安装到/usr/share/locale?

c++ - dynamic_cast 由 lt_dlopen(libtool) 加载的共享库中的接口(interface)不起作用

c++ - 函数中的链接器错误

c - 我是否必须包含包含函数定义的 C 文件?

c++ - ICU 无法解析的外部符号

objective-c - 如何使用 libtool 在 Mac OS 上创建 .a 文件(静态库)?

c++ - libtool 是否使用 -M 删除所有选项?

Android资源链接失败.....错误: failed linking references

c - 简单 "hello world"configure.ac 运行失败

c - VPATH 构建中未考虑 EXTRA_DIST