Linux 为什么已安装的Centos系统使用ld.2.17,而编译相同版本的glibc-2.17会产生ld.so

Linux 为什么已安装的Centos系统使用ld.2.17,而编译相同版本的glibc-2.17会产生ld.so,linux,compilation,installation,linker,glibc,Linux,Compilation,Installation,Linker,Glibc,我对ld.so和ld-2.17.so之间的关系感到困惑。具体来说,为什么在新安装的版本中/lib64/ld-linux-x86-64.so.2链接到ld-2.17.so,而如果我构建的是同一版本的glibc(2.17),那么生成的构建目录会显示不同的链接文件?我没有安装任何新的Glib2.17可执行文件,只是在规定的glibc build目录中构建了它们 这是Centos 7.6的最新安装,可从Centos.org镜像之一的当前可下载媒体下载 $ uname -a Linux localhost

我对ld.so和ld-2.17.so之间的关系感到困惑。具体来说,为什么在新安装的版本中/lib64/ld-linux-x86-64.so.2链接到ld-2.17.so,而如果我构建的是同一版本的glibc(2.17),那么生成的构建目录会显示不同的链接文件?我没有安装任何新的Glib2.17可执行文件,只是在规定的glibc build目录中构建了它们

这是Centos 7.6的最新安装,可从Centos.org镜像之一的当前可下载媒体下载

$ uname -a
Linux localhost.localdomain 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
glibc版本是

$ ldd --version

ldd (GNU libc) 2.17
Copyright (C) 2012 Free Software Foundation, Inc.
以及我所知道的已安装的链接器

$ ls -lt /lib64/ld*

lrwxrwxrwx. 1 root root     10 Sep 15 17:43 /lib64/ld-linux-x86-64.so.2 -> ld-2.17.so
-rwxr-xr-x. 1 root root 163400 Oct 30  2018 /lib64/ld-2.17.so
在下载glibc-2.17.tar.gz、解包、创建glibc构建目录并运行configure(所有这些似乎都正常工作)之后,我可以看到以下内容-

$ ls -lt ~build-glibc/elf/ld*

lrwxrwxrwx. 1 root root       5 Sep 16 07:25 ld-linux-x86-64.so.2 -> ld.so
-rwxr-xr-x. 1 root root  850208 Sep 16 07:25 ld.so
ld.so和ld-2.17.so都链接到ld-linux-x86-64.so.2,但大小相差很大。它们似乎都属于“ELF 64位LSB共享对象,x86-64,版本1(SYSV),动态链接”类型。如果它们有相同的用途(我不知道它们有),为什么会有名称和大小的差异


我的目标是在~/elf/rtld.c中添加几个printk语句,以便更好地理解它的功能,并将生成的可执行文件(我认为是~/elf/ld.so)复制到lib64目录中,因为它们位于同一目录中。我不知道这是否有效,但我想在继续之前了解一下ld.so和ld-2.17.so是否可以互换。或者,我看到的是一个完全不正确的结果可执行文件,用于对rtld.c所做的更改?

我了解到ld.so是“make”的结果,ld-2.17.so是“make-install”的结果。这似乎已经通过在配置和制作新的glibc-2.17之前设置测试目录得到了验证

从glibc构建目录-

../glibc-2.17/configure --prefix ~/glibc-build/test
make
make install
并在test/lib中找到ld-2.17.so


我仍然不确定为什么大小不同,或者为什么新的ld-2.17.so内核在引导期间转储,或者如何/如果可以在/lib64中安装新的ld-2.17.so,但这些是单独的问题。

您的ld.so是否已被删除?这是调试版本吗?ld.so是“make”的结果。我没有传递任何参数,也没有编辑Makefile。我想我明白你的观点——这两种情况中的任何一种都会膨胀到高管的规模?我将查看Makefile,看看是否有任何东西是合理的。