问题分析:
本篇文档是在《更改引用高版本glibc的程序到引用低版本的glibc》之后的补充文档,如果以后遇到相同问题,首先看我之前原创的《更改文件引用的高版本glibc到低版本glibc》这篇,然后再来看本篇。
本篇文档将详细记录一个在低版本glibc机器上运行由a.cpp文件编译之后的a文件,由最初的缺少GLIBC_2.14错误提示到最终成功运行的一系列步骤。
1:我们在45.154机器上查看GLIBC版本,如下:

这是a.cpp文件:

使用g++ a.cpp命令编译之后生成了a.out文件,我们在45.154机器上,也就是在本机运行a.out文件,结果如下:

可以发现a.out文件可以成功运行。
2:现在我们将a.out文件传输到45.152机器上,这个机器上的GLIBC版本如下:

可以发现该机器上的GLIBC版本比较低,我们通过scp命令将a.out文件从45.154上传输到45.152上,具体命令如下:

执行之后,输入命令,即可成功传输到45.152机器上。
3:我们在45.152机器上执行./a.o

本文档详细记录了如何在低版本glibc环境下,通过修改ELF文件的动态符号信息,使得依赖高版本glibc的程序能够成功运行。首先分析了程序报错的原因,然后使用readelf等工具检查和修改ELF文件,成功将依赖的GLIBC_2.14版本替换为GLIBC_2.2.5,从而解决了运行时错误。

被折叠的 条评论
为什么被折叠?



