gcc 和 g++ 的区别
目录
一,本质关系
二,核心区别
三,关键场景对比
(1) 编译 C 程序
(2) 编译 C++ 程序
(3) 混合编译(C + C++)
四,如何选择
用 g++ 如果:
用 gcc 如果:
五,常见误区
一,本质关系
- 同源工具:二者同属 GCC 工具链,共享大部分代码和功能。
- 分工不同:
gcc
:GNU C Compiler,默认处理 C 语言。g++
:GNU C++ Compiler,默认处理 C++ 语言。
二,核心区别
三,关键场景对比
(1) 编译 C 程序
# 两者行为相同(因 .c 后缀触发 C 模式)
gcc main.c -o main
g++ main.c -o main # 不推荐(可能引入不必要检查)
(2) 编译 C++ 程序
# 使用 g++(推荐)
g++ main.cpp -o main # 自动链接 libstdc++# 使用 gcc 需手动指定
gcc main.cpp -o main -lstdc++ # 必须显式链接 C++ 库
(3) 混合编译(C + C++)
# 需区分语言并统一链接 C++ 库
gcc -c foo.c # 编译 C 文件
g++ -c bar.cpp # 编译 C++ 文件
g++ foo.o bar.o -o program # 链接时用 g++
四,如何选择
用 g++
如果:
- 项目纯 C++ 开发
- 需要模板、异常、STL 等 C++ 特性
用 gcc
如果:
- 纯 C 项目(避免 C++ 的额外开销)
- 需要精细控制编译过程
五,常见误区
-
误区 1:
gcc
不能编译 C++
真相:能编译,但需手动链接 C++ 库(-lstdc++
)。 -
误区 2:
g++
只是gcc
的别名
真相:g++
会强制启用 C++ 模式并自动处理库依赖。 -
误区 3:两者生成的二进制文件不同
真相:若配置相同(如优化级别、链接库),输出结果一致。