Linux

為什麼我的 /usr/lib/x86_64-linux-gnu 目錄下有 libc.so.6?

  • June 3, 2022

在閱讀了 libc6-dev 和 libc6 之間的這個問題差異後,我啟動了一個新的Ubuntu 20.04 LTSVPS 並檢查了某些 Ubuntu 軟體包中包含哪些文件。

我檢查了libc6-devhttps://packages.ubuntu.com/focal/amd64/libc6-dev/filelist>)和`libc6`(<https://packages.ubuntu.com/focal/amd64/libc6/filelist)。

正如我們所見,libc6-dev這些共享庫位於/usr/lib/x86_64-linux-gnu/libc6的共享庫位於/lib/x86_64-linux-gnu/.

但讓我好奇的是:

  1. 我也有libc.so.6/usr/lib/x86_64-linux-gnu/libc.so.6 -&gt; libc-2.31.so*。並且apt install remove libc6-dev不刪除libc.so.6. 這libc.so.6是從哪裡來的?
  2. packge-rw-r--r-- 1 root root 298 Apr 7 09:24 libc.so安裝的libc6-dev只有298字節,什麼?為什麼?

sudo apt list --installed輸出:https

ll -h | grep libc ://pastebin.com/geDjY2z2輸出:https ://pastebin.com/UHn5QVt1

ll -h | grep libc輸出,左(刪除libc6-dev):

文本

libc.so.6libc6包裝的一部分。它僅在 中的文件列表中/lib/x86_64-linux-gnu,但是/lib是指向 的符號連結/usr/lib,因此它也顯示在/usr/lib/x86_64-linux-gnu中。libc.so.6是使用 C 庫的程序引用的庫:

$ ldd /bin/true
   linux-vdso.so.1 (0x00007ffc797a9000)
   libc.so.6 =&gt; /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc865f4a000)
   /lib64/ld-linux-x86-64.so.2 (0x00007fc86614b000)

libc6.so在建構程序時使用,並且是連結器腳本而不是庫;你可以檢查它的內容:

$ cat /lib/x86_64-linux-gnu/libc.so
/* GNU ld script
  Use the shared library, but some functions are only in
  the static library, so try that secondarily.  */
OUTPUT_FORMAT(elf64-x86-64)
GROUP ( /lib/x86_64-linux-gnu/libc.so.6 /usr/lib/x86_64-linux-gnu/libc_nonshared.a  AS_NEEDED ( /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 ) )

引用自:https://unix.stackexchange.com/questions/704832