零、问题

在Ubuntu20.04.6中使用GCC编译一个HelloWorld代码时遇到如下问题: 首先确认了,自己单词没有拼写错。

然后再检查GCC的版本,确实没问题: 我用的是Ubuntu20.04.6的版本。

壹、解决

没有标准的头文件需要安装build-essential来解决。

1、使用 apt-get 安装 build-essential

需要安装build-essential。 执行以下命令:

sudo apt-get install build-essential

报错,版本不兼容:

minuhy@yuvm:~/code$ sudo apt-get install build-essential

正在读取软件包列表... 完成

正在分析软件包的依赖关系树

正在读取状态信息... 完成

有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是

因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件

包尚未被创建或是它们已被从新到(Incoming)目录移出。

下列信息可能会对解决问题有所帮助:

下列软件包有未满足的依赖关系:

build-essential : 依赖: libc6-dev 但是它将不会被安装 或

libc-dev

依赖: g++ (>= 4:9.2) 但是它将不会被安装

E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

2、使用 aptitude 安装 build-essential

安装 aptitude :

sudo apt-get install aptitude

使用 aptitude 安装 build-essential:

sudo aptitude install build-essential

aptitude 会提出很多种方案的,默认的方案同样是安装不了的,我们需要在它第一次询问的时候回复n查看下一个方案,然后它会提示给一些软件降级,回复y同意,然后就安装上build-essential了。

我的操作过程如下:

root@yuvm:/home/minuhy/code# aptitude install build-essential

下列“新”软件包将被安装。

build-essential g++{a} g++-9{a} libc-dev-bin{a} libc6-dev{ab} libcrypt-dev{a} libstdc++-9-dev{a} linux-libc-dev{a}

0 个软件包被升级,新安装 8 个,0 个将被删除, 同时 0 个将不升级。

需要获取 14.0 MB 的存档。解包后将要使用 73.4 MB。

下列软件包存在未满足的依赖关系:

libc6-dev : 依赖: libc6 (= 2.31-0ubuntu9.7) 但是 2.31-0ubuntu9.9 已安装

下列动作将解决这些依赖关系:

保持 下列软件包于其当前版本:

1) build-essential [未安装的]

2) g++ [未安装的]

3) g++-9 [未安装的]

4) libc6-dev [未安装的]

5) libstdc++-9-dev [未安装的]

是否接受该解决方案?[Y/n/q/?] n

下列动作将解决这些依赖关系:

降级 下列软件包:

1) libc6 [2.31-0ubuntu9.9 (now) -> 2.31-0ubuntu9.7 (focal-security)]

2) libc6-dbg [2.31-0ubuntu9.9 (now) -> 2.31-0ubuntu9.7 (focal-security)]

是否接受该解决方案?[Y/n/q/?] y

下列软件包将被“降级”:

libc6 libc6-dbg

下列“新”软件包将被安装。

build-essential g++{a} g++-9{a} libc-dev-bin{a} libc6-dev{a} libcrypt-dev{a} libstdc++-9-dev{a} linux-libc-dev{a}

0 个软件包被升级,新安装 8 个,2 个被降级,0 个将被删除, 同时 0 个将不升级。

需要获取 27.2 MB 的存档。解包后将要使用 120 MB。

您要继续吗?[Y/n/?] y

读取: 1 http://mirrors.aliyun.com/ubuntu focal-security/main amd64 libc6-dbg amd64 2.31-0ubuntu9.7 [10.5 MB]

读取: 2 http://mirrors.aliyun.com/ubuntu focal-security/main amd64 libc6 amd64 2.31-0ubuntu9.7 [2,714 kB]

读取: 3 http://mirrors.aliyun.com/ubuntu focal-security/main amd64 libc-dev-bin amd64 2.31-0ubuntu9.7 [71.6 kB]

读取: 4 http://mirrors.aliyun.com/ubuntu focal-security/main amd64 linux-libc-dev amd64 5.4.0-153.170 [1,116 kB]

读取: 5 http://mirrors.aliyun.com/ubuntu focal/main amd64 libcrypt-dev amd64 1:4.4.10-10ubuntu4 [104 kB]

读取: 6 http://mirrors.aliyun.com/ubuntu focal-security/main amd64 libc6-dev amd64 2.31-0ubuntu9.7 [2,518 kB]

读取: 7 http://mirrors.aliyun.com/ubuntu focal-security/main amd64 libstdc++-9-dev amd64 9.4.0-1ubuntu1~20.04.1 [1,722 kB]

读取: 8 http://mirrors.aliyun.com/ubuntu focal-security/main amd64 g++-9 amd64 9.4.0-1ubuntu1~20.04.1 [8,420 kB]

读取: 9 http://mirrors.aliyun.com/ubuntu focal/main amd64 g++ amd64 4:9.3.0-1ubuntu2 [1,604 B]

读取: 10 http://mirrors.aliyun.com/ubuntu focal/main amd64 build-essential amd64 12.8ubuntu1 [4,624 B]

已下载 27.2 MB,耗时 24秒 (1,126 kB/s)

正在预设定软件包 ...

dpkg: 警告: 即将把 libc6-dbg:amd64 从 2.31-0ubuntu9.9 降级到 2.31-0ubuntu9.7

(正在读取数据库 ... 系统当前共安装有 187061 个文件和目录。)

准备解压 .../libc6-dbg_2.31-0ubuntu9.7_amd64.deb ...

正在解压 libc6-dbg:amd64 (2.31-0ubuntu9.7) 并覆盖 (2.31-0ubuntu9.9) ...

dpkg: 警告: 即将把 libc6:amd64 从 2.31-0ubuntu9.9 降级到 2.31-0ubuntu9.7

准备解压 .../libc6_2.31-0ubuntu9.7_amd64.deb ...

正在解压 libc6:amd64 (2.31-0ubuntu9.7) 并覆盖 (2.31-0ubuntu9.9) ...

正在设置 libc6:amd64 (2.31-0ubuntu9.7) ...

正在选中未选择的软件包 libc-dev-bin。

(正在读取数据库 ... 系统当前共安装有 186904 个文件和目录。)

准备解压 .../0-libc-dev-bin_2.31-0ubuntu9.7_amd64.deb ...

正在解压 libc-dev-bin (2.31-0ubuntu9.7) ...

正在选中未选择的软件包 linux-libc-dev:amd64。

准备解压 .../1-linux-libc-dev_5.4.0-153.170_amd64.deb ...

正在解压 linux-libc-dev:amd64 (5.4.0-153.170) ...

正在选中未选择的软件包 libcrypt-dev:amd64。

准备解压 .../2-libcrypt-dev_1%3a4.4.10-10ubuntu4_amd64.deb ...

正在解压 libcrypt-dev:amd64 (1:4.4.10-10ubuntu4) ...

正在选中未选择的软件包 libc6-dev:amd64。

准备解压 .../3-libc6-dev_2.31-0ubuntu9.7_amd64.deb ...

正在解压 libc6-dev:amd64 (2.31-0ubuntu9.7) ...

正在选中未选择的软件包 libstdc++-9-dev:amd64。

准备解压 .../4-libstdc++-9-dev_9.4.0-1ubuntu1~20.04.1_amd64.deb ...

正在解压 libstdc++-9-dev:amd64 (9.4.0-1ubuntu1~20.04.1) ...

正在选中未选择的软件包 g++-9。

准备解压 .../5-g++-9_9.4.0-1ubuntu1~20.04.1_amd64.deb ...

正在解压 g++-9 (9.4.0-1ubuntu1~20.04.1) ...

正在选中未选择的软件包 g++。

准备解压 .../6-g++_4%3a9.3.0-1ubuntu2_amd64.deb ...

正在解压 g++ (4:9.3.0-1ubuntu2) ...

正在选中未选择的软件包 build-essential。

准备解压 .../7-build-essential_12.8ubuntu1_amd64.deb ...

正在解压 build-essential (12.8ubuntu1) ...

正在设置 linux-libc-dev:amd64 (5.4.0-153.170) ...

正在设置 libc6-dbg:amd64 (2.31-0ubuntu9.7) ...

正在设置 libcrypt-dev:amd64 (1:4.4.10-10ubuntu4) ...

正在设置 libc-dev-bin (2.31-0ubuntu9.7) ...

正在设置 libc6-dev:amd64 (2.31-0ubuntu9.7) ...

正在设置 libstdc++-9-dev:amd64 (9.4.0-1ubuntu1~20.04.1) ...

正在设置 g++-9 (9.4.0-1ubuntu1~20.04.1) ...

正在设置 g++ (4:9.3.0-1ubuntu2) ...

update-alternatives: 使用 /usr/bin/g++ 来在自动模式中提供 /usr/bin/c++ (c++)

正在设置 build-essential (12.8ubuntu1) ...

正在处理用于 man-db (2.9.1-1) 的触发器 ...

正在处理用于 libc-bin (2.31-0ubuntu9.9) 的触发器 ...

root@yuvm:/home/minuhy/code# aptitude install build-essential

build-essential 的 (12.8ubuntu1) 版本已经按要求安装了

build-essential 的 (12.8ubuntu1) 版本已经按要求安装了

将不会安装,升级或者删除任何软件包。

0 个软件包被升级,新安装 0 个,0 个将被删除, 同时 0 个将不升级。

需要获取 0 B 的存档。解包后将要使用 0 B。

这样就安装成功了。

贰、结果

再次尝试编译C文件: 成功!

叁、参考文献

gcc编译时报错 fatal error: stdio.h: 没有那个文件 解决方法提示“无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系“的解决方案Linux学习笔记(二)build-essential的安装Ubuntu 镜像ubuntu下如何安装gcc致命错误: stdio.h:没有那个文件或目录

推荐阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。