重命名二进制格式的参考符号版本

时间:2019-05-13 14:48:14

标签: c gcc linker glibc

是否存在用于在已编译的二进制文件(可执行库或共享库)中编辑符号版本的实用程序?

例如,如果我有

> nm a.out
...
                 U powf@@GLIBC_2.27

我想将其更改为

> nm a.out
...
                 U powf@GLIBC_2.2.5

我可以通过添加来更改此版本

__asm__(".symver powf,powf@GLIBC_2.2.5");

到源文件,但是我想对已经编译的二进制文件执行此操作。

编辑二进制十六进制几乎可以,但是由于所需的符号版本比原始符号长1个字符,因此我只能设法说出

/usr/lib/libm.so.6: version `GLIBC_2.2.' not found

在运行时。

总的来说,我正在尝试使针对glibc 2.27+的二进制版本与glibc的较早版本兼容,并且如果此方法有效,它将比其他替代方法容易得多,例如编译自定义的GCC / glibc / libstdc ++ / dependencies工具链。

0 个答案:

没有答案