CentOS 下 GCC 编译常见问题与排查清单
一 环境准备与基础检查
二 高频错误与修复命令
| 症状关键词 | 典型原因 | 快速修复 |
|---|---|---|
| fatal error: xxx.h: No such file or directory | 缺少开发包或头文件路径不对 | 安装对应 -devel 包;编译加 -I/path/to/inc |
undefined reference to function@GLIBCXX_... |
libstdc++ 版本不匹配(新旧编译器混用) | 统一工具链版本;用 /usr/lib64/libstdc++.so.6 检查符号;必要时升级 GCC 或 SCL |
undefined reference to pow/sqrt |
未链接数学库 | 链接时加 -lm |
| cannot find -lmylib / library not found | 库文件不在默认路径 | 编译加 -L/path/to/lib -lmylib;运行期设置 LD_LIBRARY_PATH 或写入 /etc/ld.so.conf 并执行 ldconfig |
| C preprocessor “/lib/cpp” fails sanity check | C++ 预处理/头缺失 | 安装 glibc-headers 与 gcc-c++ |
| configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+ | 构建 GCC 依赖缺失 | 安装 gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel |
| changes in the environment can compromise the build | 多次 configure 缓存/环境变量不一致 | 执行 make distclean 或删除 config.cache 后重来 |
| No newline at end of file | 源文件末尾缺少换行 | 在文件末尾补一个回车 |
| 版本不兼容(如 C++14/17 特性不可用) | 系统 GCC 过旧 | 使用 devtoolset(如 devtoolset-7/9/11)或手动升级 GCC |
| 以上命令与对策覆盖“缺头文件/缺库/链接参数/版本不匹配/构建 GCC 依赖/缓存污染/源码格式”等最常见情形。 |
三 升级 GCC 的两条路径
四 链接与运行期问题定位
五 调试与最小化复现