ubuntu 20.04.3 上来自 gdb 的 CRC 不匹配警告 运行 helloworld.c
CRC mismatch warning running helloworld.c from gdb on ubuntu 20.04.3
我有最琐碎的程序
$ cat helloworld.c
#include <stdio.h>
int main(void){
printf("Hello World!\n");
return 0;
}
$ gcc -g helloworld.c -o helloworld
我想要在 gdb
下 运行
$ gdb -tui ./helloworld
当我 运行,从 gdb 中,
warning: the debug information found in "/lib64/ld-2.31.so" does not match "/lib64/ld-linux-x86-64.so.2" (CRC mismatch).
我认为我的系统是最新的。我已经 运行
$ sudo apt-get update
$ sudo apt-get upgrade
我尝试重新安装任何 libc6* 软件包
$ apt list --installed | grep 'libc6'
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
libc6-amd64/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,automatic]
libc6-dbg/focal-updates,now 2.31-0ubuntu9.2 amd64 [installed,automatic]
libc6-dev-amd64/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,automatic]
libc6-dev/focal-updates,now 2.31-0ubuntu9.2 amd64 [installed,automatic]
libc6-dev/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,automatic]
libc6/focal-updates,now 2.31-0ubuntu9.2 amd64 [installed,automatic]
libc6/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,automatic]
接下来,对于这 7 个包中的每一个,相当于
$ sudo apt-get --reinstall install 'libc6-amd64'
但警告与之前相同。
关于 ld-2.31.so,@employedrussian 在评论中提到
$ ls -lsh /lib64/ld-linux-x86-64.so.2
0 lrwxrwxrwx 1 root root 32 Dec 16 2020 /lib64/ld-linux-x86-64.so.2 -> /lib/x86_64-linux-gnu/ld-2.31.so
$ ls -lsh /lib/x86_64-linux-gnu/ld-2.31.so
188K -rwxr-xr-x 1 root root 187K Dec 16 2020 /lib/x86_64-linux-gnu/ld-2.31.so
$ ls -lsh /lib64/ld-2.31.so
180K -rwxr-xr-x 1 root root 178K Dec 16 2020 /lib64/ld-2.31.so
$ dpkg -S /lib64/ld-linux-x86-64.so.2
libc6:amd64: /lib64/ld-linux-x86-64.so.2
$ dpkg -S /lib64/ld-2.31.so
libc6-amd64:i386: /lib64/ld-2.31.so
我已经卸载了 libc6-dev-amd64,正如下面@employedrussian 所指出的那样
$ sudo apt-get purge libc6-dev-amd64
$ apt list --installed | grep libc6
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
libc6-amd64/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,auto-removable]
libc6-dbg/focal-updates,now 2.31-0ubuntu9.2 amd64 [installed,automatic]
libc6-dev/focal-updates,now 2.31-0ubuntu9.2 amd64 [installed,automatic]
libc6-dev/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,auto-removable]
libc6/focal-updates,now 2.31-0ubuntu9.2 amd64 [installed,automatic]
libc6/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,automatic]
但 gdb 中报告的完全相同的错误仍然存在
/lib64/ld-2.31.so 仍然存在
$ cd /lib64
$ ls -l ld-2.31.so
-rwxr-xr-x 1 root root 182168 Dec 16 2020 ld-2.31.so
libc6-amd64:i386 仍然安装
$ dpkg -l | grep libc6-amd64
ii libc6-amd64:i386 2.31-0ubuntu9.2 i386 GNU C Library: 64bit Shared libraries for AMD64
$ apt list --installed | grep libc6-amd64
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
libc6-amd64/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,auto-removable]
尝试删除包失败
$ sudo dpkg --remove libc6-amd64:i386
[sudo] password for rgh:
dpkg: dependency problems prevent removal of libc6-amd64:i386:
lib64tinfo6:i386 depends on libc6-amd64 (>= 2.16).
lib64ncursesw6:i386 depends on libc6-amd64 (>= 2.14).
lib64ncurses6:i386 depends on libc6-amd64 (>= 2.14).
dpkg: error processing package libc6-amd64:i386 (--remove):
dependency problems - not removing
Errors were encountered while processing:
libc6-amd64:i386
我确实记得前一段时间安装了一些 ncurses 软件包。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.3 LTS
Release: 20.04
Codename: focal
这似乎是根本原因:
$ dpkg -S /lib64/ld-2.31.so
libc6-amd64:i386: /lib64/ld-2.31.so
根据this answer,libc6-amd64:i386
是为Ubuntu 32位准备的64位交叉编译工具链。由于你是64位系统,这个包没用
卸载它可能会修复您的警告。
更新:
Trying to understand this
apt list
和dpkg -l
显示包名的格式不同。在我的系统上:
dpkg-query -l libc6* | grep '^ii'
ii libc6:amd64 2.32-4 amd64 GNU C Library: Shared libraries
ii libc6:i386 2.32-4 i386 GNU C Library: Shared libraries
ii libc6-dbg:amd64 2.32-4 amd64 GNU C Library: detached debugging symbols
ii libc6-dev:amd64 2.32-4 amd64 GNU C Library: Development Libraries and Header Files
ii libc6-dev-i386 2.32-4 amd64 GNU C Library: 32-bit development libraries for AMD64
ii libc6-dev-x32 2.32-4 amd64 GNU C Library: X32 ABI Development Libraries for AMD64
ii libc6-i386 2.32-4 amd64 GNU C Library: 32-bit shared libraries for AMD64
ii libc6-x32 2.32-4 amd64 GNU C Library: X32 ABI Shared libraries for AMD64
对比:
apt list --installed libc6*
libc6-dbg/...,now 2.32-4 amd64 [installed,automatic]
libc6-dev-i386/...,now 2.32-4 amd64 [installed,automatic]
libc6-dev-x32/...,now 2.32-4 amd64 [installed,automatic]
libc6-dev/...,now 2.32-4 amd64 [installed,automatic]
libc6-i386/...,now 2.32-4 amd64 [installed,automatic]
libc6-x32/...,now 2.32-4 amd64 [installed,automatic]
libc6/...,now 2.32-4 amd64 [installed]
libc6/...,now 2.32-4 i386 [installed,automatic]
我相信你要删除的包是这个:
libc6-dev-amd64/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,automatic]
我有最琐碎的程序
$ cat helloworld.c
#include <stdio.h>
int main(void){
printf("Hello World!\n");
return 0;
}
$ gcc -g helloworld.c -o helloworld
我想要在 gdb
下 运行$ gdb -tui ./helloworld
当我 运行,从 gdb 中,
warning: the debug information found in "/lib64/ld-2.31.so" does not match "/lib64/ld-linux-x86-64.so.2" (CRC mismatch).
我认为我的系统是最新的。我已经 运行
$ sudo apt-get update
$ sudo apt-get upgrade
我尝试重新安装任何 libc6* 软件包
$ apt list --installed | grep 'libc6'
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
libc6-amd64/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,automatic]
libc6-dbg/focal-updates,now 2.31-0ubuntu9.2 amd64 [installed,automatic]
libc6-dev-amd64/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,automatic]
libc6-dev/focal-updates,now 2.31-0ubuntu9.2 amd64 [installed,automatic]
libc6-dev/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,automatic]
libc6/focal-updates,now 2.31-0ubuntu9.2 amd64 [installed,automatic]
libc6/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,automatic]
接下来,对于这 7 个包中的每一个,相当于
$ sudo apt-get --reinstall install 'libc6-amd64'
但警告与之前相同。
关于 ld-2.31.so,@employedrussian 在评论中提到
$ ls -lsh /lib64/ld-linux-x86-64.so.2
0 lrwxrwxrwx 1 root root 32 Dec 16 2020 /lib64/ld-linux-x86-64.so.2 -> /lib/x86_64-linux-gnu/ld-2.31.so
$ ls -lsh /lib/x86_64-linux-gnu/ld-2.31.so
188K -rwxr-xr-x 1 root root 187K Dec 16 2020 /lib/x86_64-linux-gnu/ld-2.31.so
$ ls -lsh /lib64/ld-2.31.so
180K -rwxr-xr-x 1 root root 178K Dec 16 2020 /lib64/ld-2.31.so
$ dpkg -S /lib64/ld-linux-x86-64.so.2
libc6:amd64: /lib64/ld-linux-x86-64.so.2
$ dpkg -S /lib64/ld-2.31.so
libc6-amd64:i386: /lib64/ld-2.31.so
我已经卸载了 libc6-dev-amd64,正如下面@employedrussian 所指出的那样
$ sudo apt-get purge libc6-dev-amd64
$ apt list --installed | grep libc6
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
libc6-amd64/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,auto-removable]
libc6-dbg/focal-updates,now 2.31-0ubuntu9.2 amd64 [installed,automatic]
libc6-dev/focal-updates,now 2.31-0ubuntu9.2 amd64 [installed,automatic]
libc6-dev/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,auto-removable]
libc6/focal-updates,now 2.31-0ubuntu9.2 amd64 [installed,automatic]
libc6/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,automatic]
但 gdb 中报告的完全相同的错误仍然存在
/lib64/ld-2.31.so 仍然存在
$ cd /lib64
$ ls -l ld-2.31.so
-rwxr-xr-x 1 root root 182168 Dec 16 2020 ld-2.31.so
libc6-amd64:i386 仍然安装
$ dpkg -l | grep libc6-amd64
ii libc6-amd64:i386 2.31-0ubuntu9.2 i386 GNU C Library: 64bit Shared libraries for AMD64
$ apt list --installed | grep libc6-amd64
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
libc6-amd64/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,auto-removable]
尝试删除包失败
$ sudo dpkg --remove libc6-amd64:i386
[sudo] password for rgh:
dpkg: dependency problems prevent removal of libc6-amd64:i386:
lib64tinfo6:i386 depends on libc6-amd64 (>= 2.16).
lib64ncursesw6:i386 depends on libc6-amd64 (>= 2.14).
lib64ncurses6:i386 depends on libc6-amd64 (>= 2.14).
dpkg: error processing package libc6-amd64:i386 (--remove):
dependency problems - not removing
Errors were encountered while processing:
libc6-amd64:i386
我确实记得前一段时间安装了一些 ncurses 软件包。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.3 LTS
Release: 20.04
Codename: focal
这似乎是根本原因:
$ dpkg -S /lib64/ld-2.31.so
libc6-amd64:i386: /lib64/ld-2.31.so
根据this answer,libc6-amd64:i386
是为Ubuntu 32位准备的64位交叉编译工具链。由于你是64位系统,这个包没用
卸载它可能会修复您的警告。
更新:
Trying to understand this
apt list
和dpkg -l
显示包名的格式不同。在我的系统上:
dpkg-query -l libc6* | grep '^ii'
ii libc6:amd64 2.32-4 amd64 GNU C Library: Shared libraries
ii libc6:i386 2.32-4 i386 GNU C Library: Shared libraries
ii libc6-dbg:amd64 2.32-4 amd64 GNU C Library: detached debugging symbols
ii libc6-dev:amd64 2.32-4 amd64 GNU C Library: Development Libraries and Header Files
ii libc6-dev-i386 2.32-4 amd64 GNU C Library: 32-bit development libraries for AMD64
ii libc6-dev-x32 2.32-4 amd64 GNU C Library: X32 ABI Development Libraries for AMD64
ii libc6-i386 2.32-4 amd64 GNU C Library: 32-bit shared libraries for AMD64
ii libc6-x32 2.32-4 amd64 GNU C Library: X32 ABI Shared libraries for AMD64
对比:
apt list --installed libc6*
libc6-dbg/...,now 2.32-4 amd64 [installed,automatic]
libc6-dev-i386/...,now 2.32-4 amd64 [installed,automatic]
libc6-dev-x32/...,now 2.32-4 amd64 [installed,automatic]
libc6-dev/...,now 2.32-4 amd64 [installed,automatic]
libc6-i386/...,now 2.32-4 amd64 [installed,automatic]
libc6-x32/...,now 2.32-4 amd64 [installed,automatic]
libc6/...,now 2.32-4 amd64 [installed]
libc6/...,now 2.32-4 i386 [installed,automatic]
我相信你要删除的包是这个:
libc6-dev-amd64/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,automatic]