静态链接顺序对于GCC
非常重要,并且对于许多广泛使用的库(包括libgd
,libarchive
,MySql Connector C)创建静态版本会产生很多问题。等等。通常包括configure
脚本假设我们使用共享库,即使我们设置了静态构建,它仍然会忽略这个事实,并以错误的顺序放置静态库,因此它花费时间来查找错误并编辑{ {1}}手动。
另一方面,竞争对手编译器可以按任何顺序构建静态库,例如,Microsoft Visual C ++没有这个问题,因此看起来必须是一种解决此问题的方法。
有没有办法强制gcc自动命令静态库,就像Visual C ++一样?
答案 0 :(得分:2)
在链接期间使用标记-Wl,--start-group
和-Wl,--end-group
包装库列表。
这些标志确保在所有提到的库中查找所有未解析的符号(与顺序无关)。