Linux修改ELF解决glibc兼容性问题(转载)

转载一篇帮我解决了大问题的文章,原文URL如下 

Linux修改ELF解决glibc兼容性问题 | Soul Of Free Loop


为了使得自研的软件能兼容 CentOS 6 以上的操作系统,我们的C++代码采用 CentOS 6 作为编译平台。这个平台上自带的 GCC 和 GLIBC 等版本均较低。 为了能使用上 C++11 特性,通过 编译 GCC 源码的方式将 GCC 升级到了 9.5。 但没有升级 GLIBC。

这样,只要自研代码和第三方依赖都用现在 的 GCC 9.5 在 CentOS 6 上编译一遍,就可以在 CentOS 6 即以上系统上运行。基本没有问题。

但是最近新增了一个第三方库,由于这个库的编译非常麻烦,就想直接使用第三方编译好的 动态库。但是当链接这个动态库时报   memcpy@GLIBC_2.14 找不到的错。因为这个动态库是在高于 CentOS 6 的系统上编译的,其依赖的 GLIBC 版本高于 CentOS 6 的GLIBC 版本。

尝试了多种方法,均不成功。最后,发现 Uranus Zhou 的博文正好与我要解决的问题一致。虽然需要手工操作,有些麻烦,但此文章思路清晰,步骤原理具详。按照文章所述分析动态库,并修改动态库,问题得以解决。

感谢博主  Uranus Zhou 的分享。 

你可能感兴趣的:(软件编译安装记录,linux,服务器,c++)