我发现要加载库,首先打开一个可执行文件/lib/ld-linux-x86-64.so.2
。所有关于加载共享库的功能(在许多路径中搜索,使用 rpath 等)只有在ld-linux
加载后才能工作,因为它ld-linux
实现了这些功能。
在我看来,ld-linux.so
位置在可执行文件中是硬编码的(调用strings
我的可执行文件强化了这一理论)。我的问题是,在我的 linux 发行版中,编译器 (g++) 将ld-linux
位置设置为/lib/ld-linux-x86-64.so.2
. 在 Ubuntu(更流行)上,它位于/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
.
我想知道是否可以让我的可执行文件查找ld-linux.so
at /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
(它也作为符号链接存在于我的发行版中)。