强制ld绑定到未版本化的.so文件

时间:2012-07-31 12:34:04

标签: linux ld

我可以强制ld链接未版本化的.so文件吗?

在linux下,当我将C ++程序链接到共享库时,它将被绑定到版本化的.so文件,这通常是一个非常好的主意。例如,如果我用

编译我的程序
g++ main.cxx -l somelib

然后检查

ldd ./a.out

它会打印类似

的内容
libsomelib.so.1 => /xxxx/somelib/libsomelib.so.1

由于其他地方的系统已损坏,此文件将作为libsomelib.so安装在目标中,而不是像libsomelib.so.1一样安装在符号链接中。我不可能更改它,所以作为一种解决方法,我想更改我的makefile以链接到未版本化的.so文件。 (二进制兼容性在这里不是问题,因为一切都在受控环境中。)

1 个答案:

答案 0 :(得分:1)

通过阅读ld手册,这似乎是不可能的。我建议使用例如<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <form> 1<input type="radio" name="rad" value="1" required> 2<input type="radio" id="secondInput" name="rad" value="2"> <input type="text"> <input type="text"> <button type="submit">Submit</button> </form>之后的patchelf对其进行修复。请注意,最新发布的patchelf 0.9版本存在错误,您将需要从源代码编译patchelf master以获得patchelf --replace-needed libsomelib.so.1 libsomelib.so a.out的有效实现。