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

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

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

我试图创build一个符号链接:libfoo5.so – > libfoo.so,然后链接我的库,如:

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

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

readelf -d mybinary

我仍然得到:

Shared library: [libfoo.so]

您通常在构建共享库时执行此操作。 有一个名为“soname”的链接器选项来设置它。

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

libfoo5.so文件可能是实际libfoo.so符号链接 ,或者类似的东西。 ldd对你的二进制文件说了些什么?