之前在学vm内核调试的时候,不小心把libc6-dev之类的包给删掉了,导致后面gcc编译不了,重新下载libc6-dev时,会弹出这样的报错,这种报错之前很常见。
1 | 下列软件包有未满足的依赖关系: |
最本质的原因就是已安装的libc6版本是2.35-0ubuntu3,但是要安装的libc6-dev所要的依赖是libc6和libc-dev-bin的版本都是2.27,当初想过把libc6降级的,因为libc6是软件包,有很多依赖关系,结果系统奔溃了,还刚好没提前拍快照,只有很久之前的。
libc6就是一个软件包名称,包含c标准库的所有功能,包含有很多库文件,如libc.so.6,是底层代码如prinf函数的实现。通常存放在/lib目录下,系统核心库的存放目录。
libc6-dev含有很多c标准库,如stdio.h,math.h.包含很多头文件。解压放到/usr/include/。
/usr/lib 目录是用户级库的存放目录,这些库文件是用户安装的软件包所需的,例如图形库、数据库库、开发库等。这些库文件通常是用户安装的软件包所需的,而不是系统核心组件所需的。

最正确的办法就是下载对应版本的libc6-dev.deb解压,要和已安装的libc6版本匹配,当时是直接找了网站glibc库 下载libc6-dev.deb,但是找不到2.35版本的,后面终于在package.ubuntu.com找到,点这两个下载
1 | https://packages.ubuntu.com/jammy/libc6-dev |




解压到/tmp/libc6-dev
1 | mkdir /tmp/libc6-dev |
同理,libc-dev-bin也解压
1 | mkdir /tmp/libc-dev-bin |
后面把tmp目录下的这两个临时文件删了就好。
后面我试着gcc编译的时候,还是遇见了个老错误

1 | gcc 1.c -o 1 |
通过查找发现,它在/tmp/libc6-dev/usr/lib/x86_64-linux-gnu 这个目录里,这个正是库文件的位置,把这些库文件移动到/usr/lib/x86_64-linux-gnu/目录就好

最后,编译成功

评论区
欢迎你留下宝贵的意见,昵称输入QQ号会显示QQ头像哦~