在 Linux 下用 C++ 开发时,编译慢是非常常见的现象,通常不是“某一处配置错了”,而是 C++ 本身的特性和工程组织方式共同导致的。下面按常见原因 → 对应解释 → 解决思路来说明。
.cpp 都会:
#include.cpp 可能“看到”几十万行代码✅ 表现:
.cpp 重新编译✅ 解决:
.h 中的 #includestd::vector<std::map<int, std::string>>.cpp 都会重新实例化模板✅ 表现:
✅ 解决:
make
默认是 单线程
✅ 解决:
make -j$(nproc)
或 CMake:
cmake --build build -j$(nproc)
常见原因:
__DATE__ / __TIME__touch 文件✅ 解决:
ccacheccache 可以缓存编译结果:
sudo apt install ccache
export CC="ccache gcc"
export CXX="ccache g++"
✅ 效果:
#include <boost/...)
#include <opencv2/opencv.hpp>
这些头文件:
✅ 解决:
.cpp 中 include-O0 -g 并不快很多人误以为 Debug 快,其实:
-g 生成大量调试信息✅ 建议:
-O0 -g-O1 或 -Og-O2 / -O3原因:
ld 而非 lld✅ 解决:
lld / gold-Wl,--use-ld=lld
✅ 解决:
你可以自查:
make -j?ccache?include 重头文件?你可以告诉我:
我可以直接帮你定位是哪一类慢,甚至给你一份优化后的 CMake 配置示例。