c - Linux:如何修改 ELF 二进制文件动态部分中的共享库名称

标签 c linux

我有一个带有 soname 的共享库:libfoo.so

如何将我的二进制文件链接到 libfoo.so,以便我的二进制文件的 ELF 部分中的共享库名称为:libfoo5.so?

我尝试创建一个符号链接(symbolic link):libfoo5.so -> libfoo.so,然后这样链接我的库:

g++ ... -o mybinary *.o -Lpath -lfoo5

但是,当我打印出我的 ELF 二进制文件中的动态部分时,它显示为:

readelf -d 二进制文件

我仍然得到:

共享库:[libfoo.so]

最佳答案

您通常在构建共享库时这样做。有一个名为“soname”的链接器选项可以设置它。

我不知道你是否可以在构建后编辑它,但如果可能的话,它可能包含在名为“elfutils”的包中。该软件包包含几个旨在操作 ELF 对象文件的程序。

关于c - Linux:如何修改 ELF 二进制文件动态部分中的共享库名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3364490/

相关文章:

c - 将汇编语言翻译成 C [使用 PIC18 写入内存]

xml - POST XML 数据返回 HTTP/1.0 501 Not Implemented 错误

c++ - 在 C++ 中创建 MakeFile

c - 如何读取缓冲区中保留内容的缓冲区?

c - 如果我将非空终止缓冲区作为第一个参数传递给 strstr,会发生什么情况?

c - 为作为结构一部分的字符指针分配内存

c - C 故障中的二维动态数组

c - OpenGL从角落移动物体

linux - 在 Linux 中使用 sed 替换字符串

linux - 如何使用 AWS CLI 获取 Amazon EC2 自动缩放组中具有特定标签的实例?