Linux
為什麼我的 /usr/lib/x86_64-linux-gnu 目錄下有 libc.so.6?
在閱讀了 libc6-dev 和 libc6 之間的這個問題差異後,我啟動了一個新的
Ubuntu 20.04 LTS
VPS 並檢查了某些 Ubuntu 軟體包中包含哪些文件。我檢查了
libc6-dev
(https://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/
.但讓我好奇的是:
- 我也有
libc.so.6
(/usr/lib/x86_64-linux-gnu/
)libc.so.6 -> libc-2.31.so*
。並且apt install remove libc6-dev
不刪除libc.so.6
. 這libc.so.6
是從哪裡來的?- 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.6
是libc6
包裝的一部分。它僅在 中的文件列表中/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 => /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 ) )