是否存在用于在已编译的二进制文件(可执行库或共享库)中编辑符号版本的实用程序?
例如,如果我有
> 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工具链。