为什么`ldd`会将`libc.so`解析为`ld.so`?

为什么`ldd`会将`libc.so`解析为`ld.so`?

在我的计算机上,ldd显示libc.so.6决心/lib64/ld-linux-x86-64.so.2

ldd binary
  /lib64/ld-linux-x86-64.so.2 (0x564329071000)
  libdl.so.2 => /lib64/ld-linux-x86-64.so.2 (0x564329071000)
  libz.so.1 => /lib/libz.so.1 (0x7f7b1e631000)
  libc.so.6 => /lib64/ld-linux-x86-64.so.2 (0x564329071000)

我以为ldd的解析纯粹是基于名称的,因此它会在搜索路径中粗略地搜索libc.so.6(可能带有次要版本)ld。但我看到它解析为ld库,这是一个完全不同的名称。

在另一台机器上,它的行为符合预期:

ldd binary
  linux-vdso.so.1 =>  (0x00007ffd467d4000)
  libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007ffb22055000)
  libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007ffb21e3b000)
  libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ffb21a70000)
  /lib64/ld-linux-x86-64.so.2 (0x000055a9661b0000)

相关内容