为什么 ld 需要 /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 而它的默认动态链接器是 /lib64/ld-linux-x86-64.so.2?
Why does ld need /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 while its default dynamic linker is /lib64/ld-linux-x86-64.so.2?
在 x86-64 目标 Debian 中,大多数程序都是 link 针对具有 /lib64/ld-linux-x86-64.so.2
的共享对象。而且/lib/x86_64-linux-gnu/
里也有一个,我想的就删了
没必要 :
rm /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
然后测试:
gcc test.c
显示如下:
/usr/bin/ld: cannot find /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 inside /
collect2: error: ld returned 1 exit status
那么,当 linking 时,为什么 ld
需要找到 /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
而默认动态 linker 是 /lib64/ld-linux-x86-64.so.2
?
/lib64/ 是 link 到 /usr/lib64/.
的符号
cd /lib64/ && ls -l ld-linux-x86-64.so.2
lrwxrwxrwx 1 root .. ld-linux-x86-64.so.2 -> /lib/x86_64-linux-gnu/ld-2.28.so
cd /usr/lib/x86_64-linux-gnu/
ls -l ld-linux-x86-64.so.2
lrwxrwxrwx 1 root .. ld-linux-x86-64.so.2 -> ld-2.28.so
主要的link到linker ld-2.28.so是/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
:不要改. (/lib64/ 和 /usr/lib64/ 中的 link 是出于与某些软件的兼容性原因。)
在 x86-64 目标 Debian 中,大多数程序都是 link 针对具有 /lib64/ld-linux-x86-64.so.2
的共享对象。而且/lib/x86_64-linux-gnu/
里也有一个,我想的就删了
没必要 :
rm /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
然后测试:
gcc test.c
显示如下:
/usr/bin/ld: cannot find /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 inside /
collect2: error: ld returned 1 exit status
那么,当 linking 时,为什么 ld
需要找到 /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
而默认动态 linker 是 /lib64/ld-linux-x86-64.so.2
?
/lib64/ 是 link 到 /usr/lib64/.
的符号cd /lib64/ && ls -l ld-linux-x86-64.so.2
lrwxrwxrwx 1 root .. ld-linux-x86-64.so.2 -> /lib/x86_64-linux-gnu/ld-2.28.so
cd /usr/lib/x86_64-linux-gnu/
ls -l ld-linux-x86-64.so.2
lrwxrwxrwx 1 root .. ld-linux-x86-64.so.2 -> ld-2.28.so
主要的link到linker ld-2.28.so是/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
:不要改. (/lib64/ 和 /usr/lib64/ 中的 link 是出于与某些软件的兼容性原因。)