繁体   English   中英

为什么 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 中,大多数程序都通过/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

那么,为什么ld需要找到/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2而默认动态链接器是/lib64/ld-linux-x86-64.so.2时链接?

/lib64/ 是 /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

链接器ld-2.28.so的主要链接是/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 :不要更改它。 (/lib64/ 和 /usr/lib64/ 中的链接是出于与某些软件的兼容性原因。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM