在动手安装编译器之前,先把系统环境理顺。这一步虽小,却关乎后续的兼容性和安全性——毕竟,一个干净、更新的系统,才是顺畅开发的基础。

sudo yum update -y# CentOS 7及以下版本# 或(CentOS 8及以上版本,若使用dnf)sudo dnf update -y
基础开发工具组:一步到位
如果你不想一个一个手动安装gcc、g++、make这些基础工具,那么Development Tools工具组是一个省心的选择。它打包了日常编译所需的核心组件,直接安装即可。
sudo yum groupinstall "Development Tools" -y
安装GCC/G++编译器
通过yum(或dnf)安装GCC和G++,这是CentOS下最主流的C++编译器组合。对于绝大多数场景,这套组合已经足够应付。
sudo yum install gcc gcc-c++ -y
验证:安装是否到位?
安装完成后,确认一下版本总没错。运行以下命令,如果能看到类似“gcc (GCC) 4.8.5”的版本信息,说明安装成功。
gcc --version# 查看GCC版本g++ --version# 查看G++版本
升级到较新版本(可选)
如果你需要尝试C++17、C++20等新特性,标准仓库里的版本可能不够用了。此时可以通过Software Collections(SCL)来安装较新版本,比如GCC 10。
- 先添加SCL仓库:
sudo yum install centos-release-scl -y - 安装目标版本:
sudo yum install devtoolset-10-gcc devtoolset-10-gcc-c++ -y - 激活新版本(临时生效,仅当前终端会话有效):
scl enable devtoolset-10 bash - 永久生效(可选):编辑
~/.bashrc文件,添加以下内容:echo "source /opt/rh/devtoolset-10/enable" >> ~/.bashrcsource ~/.bashrc
编译与运行:第一个C++程序
以经典的hello.cpp为例,体验一下完整的编译运行流程。
- 创建测试程序:
#includeint main() {std::cout << "Hello, CentOS C++!" << std::endl;return 0;} - 使用G++编译:
g++ -o hello hello.cpp - 运行程序:
./hello# 输出:Hello, CentOS C++!
高级编译选项(可选)
根据实际需求,灵活调整编译选项,能让程序跑得更顺、查得更准。
- 添加调试信息:
g++ -g -o hello hello.cpp - 启用优化:
g++ -O2 -o hello hello.cpp - 链接外部库:
g++ -o hello hello.cpp -lm
使用Makefile自动化编译(可选)
项目一旦大了,手动编译就不再现实。Makefile是传统的自动化方案,简单高效。
- 创建
Makefile文件(注意缩进为Tab键):CXX = g++CXXFLAGS = -Wall -std=c++11TARGET = helloSRCS = hello.cppall: $(TARGET)$(TARGET): $(SRCS)$(CXX) $(CXXFLAGS) -o $@ $^clean:rm -f $(TARGET) - 使用
make命令编译:make - 清理生成的文件:
make clean
安装CMake(可选)
CMake在跨平台场景下更具优势,尤其是项目需要移植到Windows或macOS时。
- 安装CMake:
sudo yum install cmake -y - 创建
CMakeLists.txt文件:cmake_minimum_required(VERSION 3.10)project(HelloWorld)set(CMAKE_CXX_STANDARD 11)add_executable(hello hello.cpp) - 生成Makefile并编译:
mkdir build && cd buildcmake ..make
配置环境变量(可选)
如果编译器或库安装在了非标准路径,需要手动配置环境变量。
echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bashrcecho 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrcsource ~/.bashrc
通过以上步骤,CentOS上的C++开发环境就搭建完毕了。从基础编译到高级项目,这套流程都能覆盖,关键在于根据实际需求灵活选择。