linux操作系统基础之gcc和g++

举报
鱼酱 发表于 2022/01/07 00:15:48 2022/01/07
【摘要】 文章目录 一.介绍二. gcc and g++ 分别是GNU的c & c++编译器。三.C/C++ 中gcc和g++的对比与区别一)、区别二)、小误区 一.介绍 gcc ...

一.介绍

gcc

GNU编译器套件(GNU Compiler Collection)包括C、C++、Objective-C、Fortran、Java、Ada和Go语言的前端,
也包括了这些语言的库(如libstdc++、libgcj等等)。
GCC的初衷是为GNU操作系统专门编写的一款编译器。GNU系统是彻底的自由软件。
此处,“自由”的含义是它尊重用户的自由。 [1]

GCC(GNU Compiler Collection,GNU编译器套件),是由 GNU 开发的编程语言编译器。
它是以GPL许可证所发行的自由软件,也是 GNU计划的关键部分。
GCC原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统
(如Linux、BSD、Mac OS X等)采纳为标准的编译器,GCC同样适用于微软的Windows。 [2]
GCC是自由软件过程发展中的著名例子,由自由软件基金会以GPL协议发布。

GCC 原名为 GNU C 语言编译器(GNU C Compiler),因为它原本只能处理 C语言。

GCC 很快地扩展,变得可处理 C++。后来又扩展能够支持更多编程语言,
如Fortran、Pascal、Objective-C、Java、Ada、Go以及各类处理器架构上的汇编语言等,
所以改名GNU编译器套件(GNU Compiler Collection)。

二. gcc and g++ 分别是GNU的c & c++编译器。

gcc/g++在执行编译的时候一般有下面4步:

  • ⒈预处理,生成.i的文件[预处理器cpp]。
  • ⒉将预处理后的文件转换成汇编语言,生成文件.s[编译器egcs]。
  • ⒊由汇编变为目标代码(机器代码)生成.o的文件[汇编器as]。
  • ⒋连接目标代码,生成可执行程序[链接器ld]

三.C/C++ 中gcc和g++的对比与区别

一)、区别

    1. gcc是GCC中的c编译器
      g++是GCC中的c++编译器
    1. 对于后缀为.c的文件,gcc当成c文件处理,而g++当成c++处理
      对于后缀为.cpp的文件,两者都当成.cpp文件处理
    1. 在编译阶段,g++会自动链接STL库,而gcc必须要加一个参数-lstdc++
    1. gcc在编译c文件时,可用的预定义宏是比较少的

二)、小误区

  • 1.gcc只能用来编译.c文件,g++只能用来编译.cpp文件

答:两者都可以。对于后缀为.c的文件,gcc当成c文 件处理,而g++当成c++处理
对于后缀为.cpp的文件,两者都当成.cpp文件处理

  • 2.编译只能用gcc,链接只能用g++

答:不对。gcc和g++都能用在编译阶段,g++用在链接阶段,g++在编译阶段要加上一个参数-lstdc++.

  • 3.gcc不会定义-cplusplus宏,而g++会

答:错误。这个宏只是标志着编译器把代码按c还是c++语法解释。
以上就是C/C++ 中gcc和g++的对比与区别的详解.

文章来源: yujiang.blog.csdn.net,作者:鱼酱2333,版权归原作者所有,如需转载,请联系作者。

原文链接:yujiang.blog.csdn.net/article/details/89220869

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。