当我尝试在 Ubuntu 上编译 C 程序时,出现此错误:
$ gcc aa.c
aa.c:1:9: fatal error: stdio.h: No such file or directory
#include<stdio.h>
^--------
compilation terminated.
我尝试安装libc6-dev
并得到了这个:
$ sudo apt-get install libc6-dev
...
The following packages have unmet dependencies:
libc6-dev : Depends: libc6 (= 2.27-3ubuntu1) but 2.29-10 is to be installed
Depends: libc-dev-bin (= 2.27-3ubuntu1)
E: Unable to correct problelms, you have held broken packages.
我已经尝试过:
sudo dpkg --configure -a
,但没有任何输出。
和
sudo apt-get install -f
和
sudo apt-get clean && sudo apt-get update
和
sudo apt-get upgrade
和
sudo apt-get dist-upgrade
以上四个代码得到相同的输出:
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
使用所有这些命令后,我在编译时遇到同样的致命错误。
apt policy libc6-dev libc6
输出:
libc6-dev:
Installed: (none)
Candidate: 2.27-3ubuntu1
Version table:
2.27-3ubuntu1 500
500 http://in.archive.ubuntu.com/ubuntu bionic/main amd64 Packages
libc6:
Installed: 2.29-10
Candidate: 2.29-10
Version table:
*** 2.29-10 100
100 /var/lib/dpkg/status
2.27-3ubuntu1 500
500 http://in.archive.ubuntu.com/ubuntu bionic/main amd64 Packages
答案1
不知何故,您最终得到了当前的 Debian 测试版本libc6
,而不是任何 Ubuntu 版本。想必这是有原因的,所以改变它可能会破坏某些东西。
此时你有两个选择:
降级
libc6
到Ubuntu版本:sudo apt install libc6=2.27-3ubuntu1
这还需要降级相关的软件包(
apt
会告诉你哪些,但我想你至少有libc-bin
和locales
)或者
安装 Debian 测试
libc6-dev
包:wget http://ftp.fr.debian.org/debian/pool/main/g/glibc/libc6-dev_2.29-10_amd64.deb http://ftp.fr.debian.org/debian/pool/main/g/glibc/libc6-dev-bin_2.29-10_amd64.deb sudo apt install ./libc6-dev_2.29-10_amd64.deb ./libc6-dev-bin_2.29-10_amd64.deb
我建议恢复到 Ubuntu 版本,即使只是为了让您的下一个发行版升级更简单,但这可能会产生其他更直接的后果。