在 Linux 下用 C++ 开发时,“选编译器”通常有两层含义:
1️⃣ 选哪个编译器(gcc / g++ / clang)
2️⃣ 在构建系统里怎么指定编译器(Makefile / CMake / 命令行)
下面分层说明。
g++ --version
✅ 稳定、兼容好
✅ 几乎所有 Linux 发行版默认
✅ 适合大多数项目
编译示例:
g++ main.cpp -o main
clang++ --version
✅ 编译速度快
✅ 报错信息更清晰
✅ 对 C++ 新标准支持积极
编译示例:
clang++ main.cpp -o main
icc(Intel)pgc++(NVIDIA HPC)
一般用于高性能计算g++ main.cpp
clang++ main.cpp
CXX = g++
CXXFLAGS = -std=c++17 -O2
main: main.cpp
$(CXX) $(CXXFLAGS) main.cpp -o main
想换编译器只需改:
CXX = clang++
export CC=gcc
export CXX=g++
cmake -S . -B build
或:
cmake -S . -B build \
-DCMAKE_C_COMPILER=gcc \
-DCMAKE_CXX_COMPILER=g++
用 clang:
cmake -S . -B build \
-DCMAKE_CXX_COMPILER=clang++
set(CMAKE_CXX_COMPILER "clang++")
⚠️ 不推荐,会影响跨平台
| 场景 | 推荐 |
|---|---|
| 学习 / 普通项目 | g++ |
| 想看清晰报错 | clang++ |
| 新标准尝鲜 | clang++ |
| 服务器 / 生产 | g++ |
| 跨平台项目 | CMake + 可切换 |
which g++
which clang++
CMake 构建后查看:
cat build/CMakeCache.txt | grep COMPILER
如果你愿意,可以告诉我:
我可以直接给你一份“现成配置”。