错误原因是源文件helloworld_ljh_06.c不存在于当前工作目录或文件名拼写错误;解决方法是检查文件是否存在、路径是否正确,并确保文件名大小写和后缀准确无误。

不是文件名打错就是路径没配对,先查清楚是哪一类再动手。
gcc命令报No such file or directory但源文件明明存在
常见于当前 shell 工作目录和源文件实际位置不一致。比如你在 /home/user 下执行 gcc main.c -o main,但 main.c 其实放在 /home/user/project/ 里。
- 用
ls main.c确认文件是否真在当前目录;不存在就cd进对应目录,或改用相对/绝对路径,如gcc ./project/main.c -o main - 注意大小写:Linux 下
Main.c和main.c是两个文件 - 检查后缀:
helloworld.c写成helloworld.cpp或漏掉.c都会触发这个错误
gcc 命令本身找不到,提示 bash: gcc: No such file or directory
说明系统压根没找到 gcc 可执行文件,不是编译问题,是环境问题。
- 先运行
which gcc或command -v gcc,返回空就代表未安装或 PATH 没包含其路径 - Debian/Ubuntu 系统直接装:
sudo apt install build-essential - CentOS/RHEL:
sudo yum groupinstall 'Development Tools'或sudo dnf groupinstall 'Development Tools' - 如果已安装但
which找不到,检查PATH是否漏加了安装路径,比如/usr/bin或/usr/local/bin
交叉编译器(如 arm-linux-gcc)报 No such file or directory
典型症状:命令能 tab 补全,但一执行就报错,且 file /path/to/arm-linux-gcc 显示是 ELF 32-bit,而你的系统是 64 位。
- 这不是路径问题,是二进制兼容性问题 —— 缺少 32 位运行时库
- Ubuntu/Debian:
sudo apt install lib32z1 lib32ncurses5 lib32stdc++6 - 旧版 Ubuntu 曾用
ia32-libs,现已废弃,别试 - 验证方式:
ldd /path/to/arm-linux-gcc,看有没有 “not found” 的依赖项
编译过程中出现 cc1: No such file or directory
这是 GCC 内部组件缺失,cc1 是 C 前端,不在 PATH 里,而是在 GCC 安装目录的 libexec 或 lib/gcc/xxx/ 子目录下。
- 先定位
cc1:find /usr -name cc1 2>/dev/null或gcc -print-prog-name=cc1 - 如果
gcc -print-prog-name=cc1返回空,说明 GCC 安装不完整,重装或补装gcc-x.y-plugin-dev类包(x.y 是版本号) - 若能找到但权限不足,检查该文件是否可执行:
ls -l /path/to/cc1,必要时chmod +x /path/to/cc1 - 不建议手动往
PATH加cc1路径 —— GCC 会自己找,硬加反而容易冲突
真正卡住的地方往往不是“怎么装”,而是分不清错误源头:是 shell 找不到命令、GCC 找不到源文件、链接器找不到库,还是动态加载器缺 .so。盯住错误第一行的主语(gcc?bash?cc1?./a.out?),再决定查路径、装包,还是装兼容库。


















