linux - 如何从 Linux 共享库的符号依赖表中剥离符号版本信息?

标签 linux shared-libraries glibc memcpy

<分区>

我需要一种方法从 Linux 共享库的符号依赖表中剥离(或更改,如果不可能剥离)符号版本信息,这样我就可以解决 memcpy@GLIBC_2.14 灾难,所以我可以让我的二进制文件再次在 glibc 早于 2.14 的 Linux 上运行。

有什么工具吗?

注意:__asm__('.symver') 指令对我不起作用,因为问题不在于我的 库使用 memcpy,而是我的库使用来自 libgcc 的东西和 that 使用 memcpy@GLIBC_2.14,这就是为什么我需要一个工具来在 编译之后更改它。 谢谢。

最佳答案

I need a way to strip (or change, if stripping is not possible) the symbol version information from the symbol dependency table of a shared library in Linux, so I can work around the memcpy@GLIBC_2.14 disaster,

剥离符号版本信息

  • 如果不在链接的二进制文件中重建很多内部 ELF 结构是不可能的(即在实践中不可能)和
  • (即使您成功了)也不会生成适用于旧版 GLIBC 的二进制文件。

so I can make my binaries work on Linuxes with glibc older than 2.14 again.

您可以找到“在新系统上构建,在旧系统上运行”的方法 here .

关于linux - 如何从 Linux 共享库的符号依赖表中剥离符号版本信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29258593/

相关文章:

自定义 C 库 : can functions in the same library refer to each other?

c# - ASP.NET 的共享项目

centos7 - rpm glibc Centos 7

c++ - 如何使用函数初始化静态常量成员

python - 更改当前进程环境的 LD_LIBRARY_PATH

linux - 当后台进程完成时关闭前台进程

linux - crosstool-NG linux x86 32 位构建在 32 位虚拟机上失败,汇编程序消息

linux - linux 上的 cilk 和 glibc

linux - Linux 上的 Process Deluge

android - 如何检查手机将要关机(关机)的android应用程序?