搭建C++编译环境是进入Linux下C++开发的第一道门槛。与Windows下动辄几个G的集成开发环境不同,Linux搭建C++环境非常轻量,通常只需要一条安装命令就能完成。本文以Ubuntu和CentOS两种主流发行版为例,完整演示从安装编译器到编译运行第一个程序的整个过程,同时介绍make和cmake等构建工具的用法,帮助你快速搭建一套可用的开发环境。

一、安装g++编译器
Linux系统默认往往只带有gcc而不带g++,而gcc只能编译C语言代码,遇到.cpp文件时如果不安装g++,会报找不到头文件的错误。g++其实是gcc的一个前端,专门负责处理C++代码并自动链接C++标准库。
Ubuntu和Debian系统下使用apt包管理器安装,命令如下:
sudo apt update sudo apt install -y g++ build-essential
其中build-essential是一个元包,除了g++之外还包含gcc、make、libc头文件等一整套编译工具链,建议一并安装。CentOS、RHEL或Fedora系统则使用yum或dnf:
sudo yum install -y gcc gcc-c++ make # 或者较新的系统使用 dnf sudo dnf install -y gcc gcc-c++ make
安装完成后,通过版本命令验证是否成功:
g++ --version
如果输出类似g++ (Ubuntu 11.4.0) 11.4.0的信息,说明编译器已经就绪。如果提示命令未找到,可能是安装源有问题,可以先执行软件源更新命令再重试。
二、编译运行第一个程序
环境装好了,接下来写一个最简单的程序验证整个流程。用任意文本编辑器创建一个main.cpp文件:
#include <iostream>
int main() {
std::cout << "Hello, Linux C++!" << std::endl;
return 0;
}然后在终端执行编译命令:
g++ main.cpp -o hello ./hello
-o参数指定输出的可执行文件名,如果不加这个参数,默认会生成一个叫a.out的文件。执行./hello后看到输出的问候语,说明编译和运行环境都没有问题。
g++还有几个常用参数值得掌握。-g生成调试信息,配合gdb调试器使用;-Wall开启常见警告,建议始终带上;-O2开启优化,发布版本时使用;-std=c++17指定语言标准,不同项目对C++标准版本要求不同:
g++ -std=c++17 -Wall -g main.cpp -o hello
多文件编译也很直接,把所有源文件列在命令后面即可,比如g++ main.cpp utils.cpp -o app。但当源文件数量增多后,每次手敲命令就不现实了,这时候需要构建工具登场。
三、使用make和cmake管理项目构建
make是最经典的构建工具,通过一个名为Makefile的文件定义编译规则。make最大的好处是增量编译:只有修改过的文件会被重新编译,大幅缩短大项目的构建时间。一个简单的Makefile示例如下:
CXX = g++ CXXFLAGS = -std=c++17 -Wall -O2 main: main.o utils.o $(CXX) $(CXXFLAGS) -o main main.o utils.o main.o: main.cpp $(CXX) $(CXXFLAGS) -c main.cpp utils.o: utils.cpp $(CXX) $(CXXFLAGS) -c utils.cpp clean: rm -f *.o main
注意Makefile中命令行前面必须用Tab缩进而不是空格,这是新手最容易踩的坑。写好之后执行make即可完成编译,执行make clean可以清理编译产物。
手写Makefile在跨平台和大型项目中维护成本较高,cmake应运而生。cmake通过一份CMakeLists.txt描述项目结构,自动生成对应平台的构建文件,在Linux上默认生成Makefile。安装方式同样是包管理器:sudo apt install -y cmake。一个最小化的CMakeLists.txt如下:
cmake_minimum_required(VERSION 3.10) project(HelloApp) set(CMAKE_CXX_STANDARD 17) add_executable(hello main.cpp utils.cpp)
使用时在项目目录下执行以下三步:
mkdir build && cd build cmake .. make ./hello
这种out-of-source的构建方式会把所有中间文件放在build目录中,不污染源码目录,是当前社区推荐的标准做法。对于更大的项目,还可以考虑Ninja生成器,构建速度比传统make更快。
四、选择顺手的编辑工具
编译环境搭好后,还需要一个好用的编辑器。轻量级方案推荐VS Code,安装Microsoft官方的C/C++扩展后可以提供代码补全、跳转定义和调试功能,配合前面安装的g++和gdb,体验接近图形化IDE。服务器环境下没有图形界面时,vim配合YouCompleteMe或coc.nvim插件也是很多老手的选择。
如果项目规模较大,JetBrains的CLion是功能最全面的选择,它原生使用cmake管理项目,重构和调试能力都很强,不过属于收费软件。另外像Code::Blocks、Qt Creator这类工具也内置了编译配置界面,适合偏好图形化操作的开发者。
无论选择哪种编辑器,底层的编译核心始终是g++这套工具链,只要把本文第一、二部分的环境验证通过,后续换任何编辑器都不需要重新配置编译器。建议初学者先在命令行下手动编译几个小程序,理解编译、链接的基本流程之后,再过渡到自动化构建工具,这样遇到构建报错时能更快定位问题原因。