很多人在 CentOS 上开始写 C++ 时,第一步就会卡在两个问题上:系统里到底该装什么,编译时又该用 gcc 还是 g++。这篇文章按“安装环境、写最小示例、完成编译运行、补上调试和构建工具”的顺序整理一遍,读完后你可以直接判断一台 CentOS 机器是否已经具备基础的 C++ 开发能力,也知道常见命令各自解决什么问题。
安装 GCC 和 G++
在 CentOS 上做 C++ 开发,首先要确认编译器已经安装。很多环境里默认只有基础的 C 编译能力,而 C++ 通常还需要单独安装对应组件。

sudo yum install gcc gcc-c++
这条命令会安装 gcc 和 g++。其中,gcc 主要用于 C 语言编译,g++ 则面向 C++,后续编译 C++ 程序时应优先使用它。
先写一个最小 C++ 程序
确认工具装好后,可以先用一个最经典的示例验证环境是否正常。新建文件 hello.cpp,写入下面这段代码:
#include
int main() {
std::cout << "Hello, World!" << std::endl;
return 0;
}
这个例子会使用 C++ 标准库中的 iostream 输出一行文本,适合用来检查“源码能否编译”和“标准库是否正确链接”这两个基础环节。
用 g++ 编译并运行程序
为什么这里要用 g++
编译这段代码时,建议直接使用 g++,而不是 gcc。原因很简单:g++ 会自动链接 C++ 标准库,这对包含 iostream 的程序是必须的。

g++ -o hello hello.cpp
这里的 -o hello 表示把输出文件命名为 hello。命令执行完成后,当前目录下会生成一个可执行文件。
运行结果怎么判断
编译完成后,直接执行:
./hello
如果环境和编译过程都没有问题,终端会输出:
Hello, World!
走到这一步,说明你的 CentOS 已经具备最基本的 C++ 编译和运行能力。
实际开发常用的编译选项
能编译成功只是起点,实际开发里通常还会加上一些编译参数,用来发现问题、保留调试信息或提高运行效率。比较常见的有下面几个:
-Wall:打开常见警告,方便尽早发现代码里的潜在问题。-g:生成调试信息,后续配合gdb使用。-O2:开启二级优化,在不激进改动行为的前提下提升程序性能。
它们可以一起使用:
g++ -Wall -g -O2 -o hello hello.cpp
如果你只是做练习,最常见的组合往往就是 -Wall -g;如果已经进入可运行版本测试,再加上 -O2 会更接近真实项目的编译方式。
程序出错时如何用 gdb 调试
当程序能编译却运行异常时,下一步就不是反复猜测,而是进入调试。CentOS 上可以先安装 gdb:
sudo yum install gdb
安装完成后,用它加载刚刚生成的可执行文件:
gdb hello
进入 gdb 后,就可以按常见调试流程处理问题,例如设置断点、单步执行、检查变量值。前面提到的 -g 参数正是为了让这些调试信息保留下来,否则调试体验会明显受限。
项目变大后再补上 make 和 cmake
当代码不再只有一个 hello.cpp 文件,手动输入完整编译命令就会开始变得低效。这时通常会引入构建工具:
make:适合通过Makefile管理多文件编译流程,一条命令即可完成增量构建。cmake:负责生成构建系统,跨平台能力更强,现代 C++ 项目中很常见。
可以把它们理解为“把一次次手动输入的编译命令整理成可复用流程”的工具。先掌握 g++ 的基础编译方式,再去理解 make 和 cmake,上手会更顺。
从零开始的最小可用路径
如果你的目标只是确认 CentOS 能不能开始写 C++,最短路径其实很明确:先安装 gcc gcc-c++,再写一个 hello.cpp,用 g++ -o hello hello.cpp 编译,并通过 ./hello 验证输出。接下来再根据需要补上 -Wall、-g、-O2,以及 gdb、make、cmake 这些工具,基本就能覆盖 CentOS 下 C++ 开发的入门阶段。







