gcc未安装是“command not found”主因,应先查/etc/os-release确认发行版,再按ubuntu装build-essential、centos装development tools组等对应方式重装,而非盲目调path。

确认GCC真没装,而不是PATH没配
系统里没有gcc命令,90%的情况是压根没装,不是环境变量问题。别花时间查PATH或改.bashrc——先运行cat /etc/os-release看发行版,再按对应方式重装。Ubuntu上只跑sudo apt install gcc也不够,它不带g++和头文件,必须装build-essential;CentOS 7上只装gcc包,#include <stdio.h></stdio.h>会报错,得用yum groupinstall "Development Tools"。
装完却 still command not found?检查安装路径是否在PATH里
极少数情况是装了但不在PATH中,常见于源码编译安装或某些国产发行版(如麒麟)用rpm手动装后未自动注册路径。验证方法:find /usr -name "gcc" 2>/dev/null 或 ls /usr/local/bin/gcc。如果发现gcc在/usr/local/bin/gcc,而echo $PATH没包含该路径,就补上:export PATH=$PATH:/usr/local/bin。要永久生效,加到~/.bashrc末尾,然后source ~/.bashrc。注意:别写成/usr/lib——那是库目录,不是可执行文件所在位置。
交叉编译器arm-linux-gcc找不到?别和主机gcc混为一谈
gcc和arm-linux-gcc完全不是同一个东西。你在Ubuntu上装了build-essential,只会得到x86_64版本的gcc,不会自动给你arm-linux-gnueabihf-gcc。要编译ARM程序,必须单独装交叉工具链:sudo apt install gcc-arm-linux-gnueabihf(对应带硬浮点的ARMv7/v8),装完用arm-linux-gnueabihf-gcc --version验证。嫌名字太长?可以建符号链接:sudo ln -s /usr/bin/arm-linux-gnueabihf-gcc /usr/bin/arm-linux-gcc。
老系统(如CentOS 7)装了但版本太低,C++17代码编译不过
CentOS 7默认gcc是4.8.5,不支持std::optional或constexpr if。此时gcc --version能输出,但g++ -std=c++17 test.cpp会报错。这不是PATH或安装问题,是版本能力边界。解决路径只有两条:一是启用SCL(Software Collections),运行sudo yum install centos-release-scl && sudo yum install devtoolset-11,然后scl enable devtoolset-11 bash;二是源码编译新版GCC,但要注意依赖库(gmp、mpfr、mpc)必须提前装好,且configure时别漏掉--prefix和--enable-languages=c,c++。
cat /etc/os-release只看一眼ID字段,就能避开80%的安装失败。











