为了演示,我制作了两个版本的libgcc_s.so.1的2个文件夹 我根据ldd:
寻找图书馆的选择> file {A,B}/libgcc_s.so.1
A/libgcc_s.so.1: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), stripped
B/libgcc_s.so.1: ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), stripped
> LD_LIBRARY_PATH=A:B ldd MyProgram | grep libgcc_s.so.1
libgcc_s.so.1 => B/libgcc_s.so.1
为什么MyProgram不使用A / libgcc_s.so.1? 我理解这是架构问题,但A / libgcc_s.so.1如何被视为无效,我该如何手动测试呢?
答案 0 :(得分:0)
ELF header's第三个字段是" machine" amd64(x86_64)的值为62,i386(80386)的值为3。当然,加载程序将检查此字段以确定它是否可以使用给定的库,如果不是,它将继续到其搜索列表中的下一个路径。