gcc(GNU C Compiler)是针对 C 语言的编译器,g++(GNU C++ Compiler)是针对 C++ 语言的编译器,二者都属于 GNU 编译器套件(GCC),是 Linux/macOS 系统下最常用的编译工具,Windows 也可通过 MinGW/WSL 使用。
一、核心区别(新手必看)
| 特性 | gcc | g++ |
|---|---|---|
| 编译语言 | 主要编译 C 语言 | 主要编译 C++ 语言 |
| 链接库 | 默认只链接 C 标准库(libc) | 默认链接 C++ 标准库(libstdc++) |
| 处理后缀 | .c 按 C 编译,.cpp 按 C++ 编译 | 所有后缀(.c/.cpp)都按 C++ 编译 |
简单说:编译 C 程序用gcc,编译 C++ 程序用g++,避免链接库缺失导致的报错。
二、基础使用步骤(以 Linux 为例)
1. 检查是否安装
bash
运行
gcc --version # 查看gcc版本 g++ --version # 查看g++版本若未安装,Ubuntu/Debian 系统可安装:
bash
运行
sudo apt update sudo apt install gcc g++ # 安装最新版2. 编译单个文件(最常用)
示例 1:编译 C 程序(test.c)
c
运行
// test.c #include <stdio.h> int main() { printf("Hello GCC!\n"); return 0; }编译运行命令:
bash
运行
gcc test.c -o test # -o 指定输出可执行文件名为test ./test # 运行程序,输出:Hello GCC!示例 2:编译 C++ 程序(test.cpp)
cpp
运行
// test.cpp #include <iostream> using namespace std; int main() { cout << "Hello G++!" << endl; return 0; }编译运行命令:
bash
运行
g++ test.cpp -o test # 必须用g++,否则会缺失C++库链接 ./test # 运行程序,输出:Hello G++!3. 常用编译参数(新手高频)
| 参数 | 作用 | 示例 |
|---|---|---|
-o | 指定输出文件名(必用) | gcc a.c -o myapp |
-Wall | 显示所有警告信息(调试必备) | g++ b.cpp -o b -Wall |
-g | 生成调试信息(可用于 gdb 调试) | gcc c.c -o c -g |
-O2 | 开启优化(提升运行效率,发布版用) | g++ d.cpp -o d -O2 |
-std=c++11 | 指定 C++ 标准(如 C++11/17) | g++ e.cpp -o e -std=c++11 |
三、编译多个文件(实战场景)
若项目有多个源文件(如main.cpp+utils.cpp),编译命令:
bash
运行
# 方式1:直接编译所有文件 g++ main.cpp utils.cpp -o myapp -Wall -std=c++11 # 方式2:分步编译(适合大项目,修改单个文件无需重新编译所有) g++ -c main.cpp -o main.o -Wall # -c 只编译不链接,生成目标文件.o g++ -c utils.cpp -o utils.o -Wall g++ main.o utils.o -o myapp # 链接所有.o文件生成可执行程序四、Windows 下使用 gcc/g++
Windows 无默认 gcc/g++,推荐两种方式:
- MinGW:下载 MinGW-w64,配置环境变量后,在 CMD/PowerShell 中使用
gcc/g++命令,用法和 Linux 一致。 - WSL(Windows Subsystem for Linux):安装 Ubuntu 子系统,直接使用 Linux 的 gcc/g++,体验最接近原生。
总结
gcc对应 C 语言,g++对应 C++ 语言,编译 C++ 程序优先用g++避免库链接问题。- 核心编译流程:
编译器 源文件 -o 输出文件,-Wall(看警告)和-g(调试)是新手必备参数。 - 多文件编译可分步生成
.o目标文件,再链接,提升开发效率。