我有一个项目生成一个共享库,该库与另一个共享库链接。
当我用 gcc 4.4 编译并链接它时,一切正常:
- 没有编译时警告或错误,
- 没有链接时间警告或错误并且
-
ldd libmyproject.so
正确报告与其他共享库的依赖关系。
另一方面,当我用 gcc 4.5 编译并链接它时(使用完全相同的标志),我有以下症状:
- 没有编译时警告或错误,
- 无链接时间警告或错误but
- 该库未正确链接到其他共享库:当我运行时,此清单本身
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(使用前将#替换为@)