绕过 gcc 中的静态链接顺序问题

Bypass static linking order problems in gcc

本文关键字:链接 顺序 问题 静态 gcc 绕过      更新时间:2023-10-16

静态链接顺序对GCC很重要,它给很多广泛使用的库创建静态版本带来了很多问题,包括libgdlibarchive、MySql Connector C等。 通常包含在脚本configure假设我们使用共享库,即使我们设置了静态构建,它仍然忽略了这一事实,并以错误的顺序放置静态库, 因此,查找错误并手动编辑makefile会花费时间。

另一方面,竞争对手的编译器可以按任何顺序构建静态库,例如,Microsoft Visual C++没有这个问题,所以看起来一定是解决这个问题的一种方法。

有没有办法强制 gcc 像 Visual C++ 一样自动订购静态库?

链接期间用-Wl,--start-group-Wl,--end-group标志包装库列表。

这些标志确保在所有提到的库中查找所有未解析的符号(与顺序无关)。