系统未安装gcc时,应先运行cat /etc/os-release确认发行版id,再按对应包管理器安装:ubuntu/debian用sudo apt update && sudo apt install build-essential;centos/rhel/fedora用sudo yum/dnf groupinstall "development tools";arch系用sudo pacman -s base-devel;国产发行版优先查文档,多兼容yum/dnf。

系统里没有 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 包
只装 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></stdio.h> 报错找不到头文件——因为 glibc-devel 没装。必须用 groupinstall:
- 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 - /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++链接
最容易被忽略的一点:g++ 不只是“带了 C++ 支持的 gcc”,它在链接阶段的行为是硬编码的,换用 gcc 链接 C++ 目标文件,十有八九会缺符号或崩溃











