GCC“;未定义的引用;但符号是存在的

GCC“;未定义的引用;但符号是存在的,gcc,shared-libraries,name-mangling,Gcc,Shared Libraries,Name Mangling,我可以使用不同版本的GCC创建的共享库吗?如何使用 链接时,我对错误有未定义的引用。但是这些名称存在于so库中。我发现libs是使用较旧的GCC版本(2.8)构建的,而我使用的是当前的GCC版本(4.7),因此名称的混乱程度似乎有所不同: 由GCC构建2.8.1: setInfo\uuuu10ss7\u HeaderUl 由GCC构建4.7.2: \u ZN10SS7\u Header7setInfoEm 无法解决(对吗?) 有没有办法使用旧的共享库而不重建它们?(也许我可以使用一些向后兼容标志

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

链接时,我对错误有
未定义的引用。但是这些名称存在于
so
库中。我发现libs是使用较旧的GCC版本(2.8)构建的,而我使用的是当前的GCC版本(4.7),因此名称的混乱程度似乎有所不同:

由GCC构建2.8.1

setInfo\uuuu10ss7\u HeaderUl

由GCC构建4.7.2

\u ZN10SS7\u Header7setInfoEm

无法解决(对吗?)

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

有没有办法使用旧的共享库而不重建它们

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


如果您设法修复了损坏,您只会得到崩溃,因为对象布局完全不同。更改mangling的目的正是为了避免调试运行时崩溃的麻烦,这将很难理解。

看起来他们更改了mangling的名称。