GCC“未定义引用”但存在符号

时间:2015-05-21 17:25:37

标签: gcc shared-libraries name-mangling

我可以使用由不同版本的GCC创建的共享库吗?

链接时出现undefined reference to错误。但这些名称存在于so库中。我发现libs是使用较旧的GCC版本(2.8)构建的,我使用的是当前的GCC版本(4.7),因此它的名称似乎有所不同:

由GCC建立 2.8.1

setInfo__10SS7_HeaderUl

由GCC建立 4.7.2

_ZN10SS7_Header7setInfoEm

并且无法解决(对吧?)。

有没有办法在不重建的情况下使用旧的共享库? (也许我可以使用一些向后兼容性标志等重新编译现有代码,以适应旧库)

1 个答案:

答案 0 :(得分:1)

  

有没有办法在不重建的情况下使用旧的共享库?

否:gcc-2.x和3.x不兼容ABI。

如果你以某种方式设法修复了损坏,你就会因为对象布局完全不同而崩溃。修改了正好以节省调试很难理解的运行时崩溃的麻烦。