在调试时(在 64 位系统上),gdb
告诉我:
warning: the debug information found in "/lib64/ld-2.19.so" does not match "/lib64/ld-linux-x86-64.so.2" (CRC mismatch).
试图追踪(并解决)此消息导致我:
$ ls -l /lib64/ld-2.19.so /lib64/ld-linux-x86-64.so.2
-rwxr-xr-x 1 root root 140928 Feb 25 12:00 /lib64/ld-2.19.so
lrwxrwxrwx 1 root root 32 Feb 25 11:56 /lib64/ld-linux-x86-64.so.2 -> /lib/x86_64-linux-gnu/ld-2.19.so
$ ls -l -L /lib64/ld-2.19.so /lib64/ld-linux-x86-64.so.2
-rwxr-xr-x 1 root root 140928 Feb 25 12:00 /lib64/ld-2.19.so
-rwxr-xr-x 1 root root 149120 Feb 25 11:56 /lib64/ld-linux-x86-64.so.2
$ for i in /lib64/ld-2.19.so /lib64/ld-linux-x86-64.so.2 /lib/x86_64-linux-gnu/ld-2.19.so ; do dpkg -S $i; done
libc6-amd64: /lib64/ld-2.19.so
libc6:amd64: /lib64/ld-linux-x86-64.so.2
libc6:amd64: /lib/x86_64-linux-gnu/ld-2.19.so
$ for i in libc6-amd64 libc6:amd64 ; do
> apt-cache policy $i
> apt-cache search $i
> done
libc6-amd64:i386:
Installed: 2.19-0ubuntu6.6
Candidate: 2.19-0ubuntu6.6
Version table:
*** 2.19-0ubuntu6.6 0
500 http://ca.archive.ubuntu.com/ubuntu/ trusty-updates/main i386 Packages
500 http://security.ubuntu.com/ubuntu/ trusty-security/main i386 Packages
100 /var/lib/dpkg/status
2.19-0ubuntu6 0
500 http://ca.archive.ubuntu.com/ubuntu/ trusty/main i386 Packages
libc6-amd64 - Embedded GNU C Library: 64bit Shared libraries for AMD64
libc6:
Installed: 2.19-0ubuntu6.6
Candidate: 2.19-0ubuntu6.6
Version table:
*** 2.19-0ubuntu6.6 0
500 http://ca.archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages
100 /var/lib/dpkg/status
2.19-0ubuntu6 0
500 http://ca.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
So libc6-amd64
is libc6-amd64:i386
and described itself as "Embedded GNU C Library: 64bit Shared libraries for AMD64", while libc6:amd64
is libc6
and described itself as "Embedded GNU C Library: Shared libraries"(通过dpkg -L
)。
任何人都可以解释这两个包之间的区别吗?我对删除名称以 开头的任何内容犹豫不决libc
,因为我知道许多通往门挡模式的路径都以类似的“简单”步骤开头。
libc6:amd64
是你的原生包永远不要碰那个,看看为什么试试这个apt-cache rdepends libc6:amd64
来查看所有需要它的包。这
libc6-amd64:i386
很奇怪!AFAIK 32 位系统无法运行 64 位程序。可以看到libc6-i386:amd64
,但是libc6-amd64:i386
。检查在其上中继的包
apt-cache rdepends libc6-amd64:i386
。只有一些包,基本上是:编译器、调试器、c 库。那么它只是为 Ubuntu 32 位准备的 64 位交叉编译工具链。所以它对你来说是无用的,因为你已经有一个 64 位系统。你可以删除它,但在接受之前检查好删除列表。(你应该看到几乎是
:i386
包)