链接后设置SONAME

时间:2017-07-29 17:53:36

标签: linux shared-libraries gnu

考虑以下创建共享库。是可以的吗

g++ -shared -o __targets/libfoo.so libfoo.cpp
some command that sets SONAME of __targets/libfoo.so to libfoo.so.X

而不是

g++ -shared -o __targets/libfoo.so -Wl,-soname,libfoo.so.X libfoo.cpp

问题是发出链接命令的模块不知道版本号。

1 个答案:

答案 0 :(得分:1)

就个人而言,我认为这不是一个好主意,但如果你真的需要它,那就有一个名为patchelf的程序。甚至有可能它已作为您的发行版的一部分打包。因此,您应该可以通过调用以下命令在第二步设置soname

patchelf --set-soname libfoo.so.X __targets/libfoo.so