GCC "undefined reference to" 但符号存在

GCC "undefined reference to" but symbols exist

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

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

由 GCC 构建 2.8.1:

setInfo__10SS7_HeaderUl

由 GCC 构建 4.7.2:

_ZN10SS7_Header7setInfoEm

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

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

Is there any way to use old shared libraries without rebuilding them?

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

如果您设法以某种方式修复了该重整,您只会遇到崩溃,因为对象布局完全不同。修改精确地是为了省去调试运行时崩溃的麻烦,这将是非常难以理解的。