gcc 4.5 中在链接方面引入的更改?

2024-04-25

我有一个项目生成一个共享库,该库与另一个共享库链接。

当我用 gcc 4.4 编译并链接它时,一切正常:

  1. 没有编译时警告或错误,
  2. 没有链接时间警告或错误并且
  3. ldd libmyproject.so正确报告与其他共享库的依赖关系。

另一方面,当我用 gcc 4.5 编译并链接它时(使用完全相同的标志),我有以下症状:

  1. 没有编译时警告或错误,
  2. 无链接时间警告或错误but
  3. 该库未正确链接到其他共享库:当我运行时,此清单本身ldd并且看不到连接,而且当我尝试使用它时:虽然它与 gcc 4.4 一起工作,但它在 gcc 4.5 运行时崩溃,并出现“符号未找到”错误(当然来自其他库)。

我看了看发行说明 http://gcc.gnu.org/gcc-4.5/changes.html我的直觉是它与新的链接时间优化有关,但我无法足够详细地理解它们。

有没有人遇到过类似的情况和/或有什么建议可以提供?

(请注意,4.6 的结果在外观上与 4.5 相同)。


总结 Mat 的回答GCC 4.5 与 4.4 与依赖项的链接 https://stackoverflow.com/questions/8725572/gcc-4-5-vs-4-4-linking-with-dependencies/8725914#8725914以及评论中的讨论,您需要链接到:

--copy-dt-needed-entries and --no-as-needed
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

gcc 4.5 中在链接方面引入的更改? 的相关文章

随机推荐