我可以使用由不同版本的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
并且无法解决(对吧?)。
有没有办法在不重建的情况下使用旧的共享库? (也许我可以使用一些向后兼容性标志等重新编译现有代码,以适应旧库)
答案 0 :(得分:1)
有没有办法在不重建的情况下使用旧的共享库?
否:gcc-2.x和3.x不兼容ABI。
如果你以某种方式设法修复了损坏,你就会因为对象布局完全不同而崩溃。修改了正好以节省调试很难理解的运行时崩溃的麻烦。