为什么 /usr/lib/x86_64-linux-gnu 目录下有 libc.so.6?

为什么 /usr/lib/x86_64-linux-gnu 目录下有 libc.so.6?

当我读完这个问题后libc6-dev 和 libc6 之间的区别,我启动了一个新的Ubuntu 20.04 LTSVPS,并检查了一些 Ubuntu 软件包中包含哪些文件。

我检查了libc6-devhttps://packages.ubuntu.com/focal/amd64/libc6-dev/filelist) 和libc6https://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 -> libc-2.31.so*apt install remove libc6-devlibc.so.6libc.so.6

  2. packge安装-rw-r--r-- 1 root root 298 Apr 7 09:24 libc.solibc6-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-gnulibc.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 ) )

相关内容