当我读完这个问题后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://pastebin.com/geDjY2z2
ll -h | grep libc
输出:https://pastebin.com/UHn5QVt1
ll -h | grep libc
输出,左(删除libc6-dev
):
答案1
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)
libc.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 ) )