零、问题
在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:没有那个文件或目录