GCC未安装时,需先运行cat /etc/os-release确认发行版:ID为ubuntu或debian用sudo apt update && sudo apt install build-essential;ID为centos、rhel或fedora用sudo dnf groupinstall "Development Tools"(CentOS 8+)或sudo yum groupinstall "Development Tools"(CentOS 7);ID为arch用sudo pacman -S base-devel。

系统里没有 gcc 命令,基本可以断定 GCC 没装——不是路径问题,也不是权限问题,就是压根没装。别试 which gcc 或 gcc --version 看报错,直接进安装流程。
怎么确认自己用的是哪个 Linux 发行版
不同发行版的包管理命令完全不同,混用会卡在第一步。最稳的方式是看 /etc/os-release:
- 运行
cat /etc/os-release,重点看ID=和ID_LIKE=这两行 -
ID="ubuntu"或ID_LIKE="debian"→ 用apt -
ID="centos"、ID="rhel"、ID="fedora"或ID_LIKE="fedora"→ 用yum或dnf -
ID="arch"或ID="manjaro"→ 用pacman -
ID="bclinux"、ID="euleros"等国产发行版 → 多数兼容yum或dnf,但优先查对应文档
Ubuntu/Debian 系统装 GCC 的正确命令
只装 gcc 包不够,它不带 g++、make、libc-dev,后续编译 C++ 或链接标准库会失败。必须装元包:
- 先更新索引:
sudo apt update - 再装完整工具链:
sudo apt install build-essential - 验证:
gcc --version和g++ --version都得能输出版本号 - 注意:
build-essential不包含gdb或cmake,需要调试或构建大型项目时得额外装
CentOS/RHEL/Fedora 装 GCC 别漏掉“Development Tools”组
很多人只记得 yum install gcc,结果发现 #include <stdio.h> 报错找不到头文件——因为 glibc-devel 没装。必须用 groupinstall:
立即学习“C++免费学习笔记(深入)”;
- CentOS 7 / RHEL 7:
sudo yum groupinstall "Development Tools" - CentOS 8+ / RHEL 8+ / Fedora:
sudo dnf groupinstall "Development Tools" - 装完检查:
ls /usr/include/stdio.h应该存在;gcc -xc++ -E - </dev/null不报错才算头文件和 C++ 前端都齐了 - 如果系统很老(如 CentOS 7 默认 gcc 4.8.5),而你需要 C++17 支持,光装这个组没用,得走 SCL 或源码编译
gcc 和 g++ 不能混着用,尤其涉及标准库链接时
写 C++ 代码却用 gcc main.cpp -o app,很可能跑起来就段错误——gcc 默认只链接 libc,不链接 libstdc++;g++ 才自动加 -lstdc++ 并定义 __cplusplus 宏:
- C 文件(
.c):用gcc,简洁可靠 - C++ 文件(
.cpp、.cc):必须用g++,哪怕只是编译不链接(g++ -c) - 混合项目(C + C++):C 部分用
gcc -c,C++ 部分用g++ -c,最后统一用g++链接所有.o文件 - 容易忽略的点:
g++默认启用-std=gnu++14(各版本略有差异),而gcc对 C++ 文件根本不认,会当作 C 解析,直接语法报错
真正麻烦的不是装不上,而是装了低版本 GCC 却没意识到它不支持你写的语言特性,比如在 CentOS 7 上用 std::optional 却不升级 GCC,编译器根本没见过这个符号。版本兼容性比安装动作本身更值得花时间确认。


















