gcc 4.5中关于链接的变化?

Phi*_*ppe 8 linker gcc shared-libraries

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

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

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

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

  1. 没有编译时警告或错误,
  2. 没有链接时间警告或错误但是
  3. 库没有正确地链接到其他共享库:当我运行ldd并且看不到连接时,这个表现本身,当我尝试使用它时:当它与gcc 4.4一起使用时,它在运行时崩溃与gcc崩溃4.5带有"未找到符号"错误(当然来自其他lib).

我查看了发行说明,我的直觉是它与新的链接时优化有关,但我无法理解它们的详细信息.

有没有人遇到类似的情况和/或有任何建议?

(注意,4.6的结果外观与4.5相同).

cha*_*ite 2

要总结 Mat 在GCC 4.5 vs 4.4 中的答案,链接依赖项和评论中的讨论,您需要链接:

--copy-dt-needed-entries and --no-as-needed
Run Code Online (Sandbox Code Playgroud)