• 周四. 8月 11th, 2022

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

gcc与g++

admin

11月 28, 2021

我写过一篇这个文章, 介绍了 GCC 的整体架构

孙孟越:GCC 的整体架构zhuanlan.zhihu.com图标

GCC 是 GNU 编译器集合的意思, 对于用户能用的常用命令, 有 gcc 和 g++.

无论是 gcc 还是 g++, 他们的定位都是 driver.

driver 负责调用编译器(狭义), 把源码编译到汇编代码. 比如 C 语言的编译器(狭义)是 cc1, 而 C++ 语言的编译器(狭义)是 cc1plus.

driver 再调用 as, 把汇编代码变成二进制代码. 最后调用 ld, 负责把二进制代码拼在一起.


gcc 和 g++ 的区别无非就是调用的编译器不同, 并且传递给链接器的参数不同.

具体而言

g++ 会把 .c 文件当做是 C++ 语言 (在 .c 文件前后分别加上 -xc++-xnone, 强行变成 C++), 从而调用 cc1plus 进行编译.

g++ 遇到 .cpp 文件也会当做是 C++, 调用 cc1plus 进行编译.

g++ 还会默认告诉链接器, 让它链接上 C++ 标准库.

 

gcc 会把 .c 文件当做是 C 语言. 从而调用 cc1 进行编译.

gcc 遇到 .cpp 文件, 会处理成 C++ 语言. 调用 cc1plus 进行编译.

gcc 默认不会链接上 C++ 标准库.

 

这些区别都可以在

回答中的那两个源代码中看到.

发表评论

您的电子邮箱地址不会被公开。