考虑以下共享库的创建。是可以做到的
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
问题是发出链接命令的模块不知道版本号。
最佳答案
就我个人而言,我不认为这是一个好主意,但如果你真的需要它,有一个程序称为patchelf。甚至有可能它已经打包成了您的发行版的一部分。因此,您应该能够在第二步通过调用以下命令设置soname
:patchelf --set-soname libfoo.so.X __targets/libfoo.so
关于linux - 链接后设置SONAME,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45392319/