我发现要加载库,首先打开一个可执行文件/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.soat /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2(它也作为符号链接存在于我的发行版中)。