Linux环境中gcc和g++的区别详解-yzc888亚洲城系统官网

yzc888

  • 热门搜索:
  • yzc888亚洲城手机版
  • 雨林木风系统
  • 深度系统
  • 电脑公司系统
  • win7装机版
  • 教程分类
    当前位置:主页 > 教程咨询 > Linux教程

    Linux环境中gcc和g++的区别详解

    来源:yzc888亚洲城┆发布时间:2018-11-21 11:00┆点击:

    yzc888亚洲城为您提供Linux环境中gcc和g++的区别详解的文章咨询供您阅读,如何使用Linux环境中gcc和g++的区别详解的方法对您有帮助也请您举手之劳分享给您身边的人。

    Windows中我们常用vs来编译编写好的C和C++代码;vs把编辑器,编译器和调试器等工具都集成在这一款工具中,在Linux下我们能用什么工具来编译所编写好的代码呢,其实Linux下这样的工具有很多,但我们只介绍两款常用的工具,它们分别是gcc和g++。

    工具用法介绍

    gcc和g++的用法都是一样的,在这里我们只介绍gcc:

    Linux环境中gcc和g++的区别详解

    上图介绍了相关指令和参数以及该条指令所做的对应的事情。

    gcc  -E  filename.c  -o  filename.i

    将c文件转化成C++文件,这个过程也叫做预处理过程

    gcc -S  filename.i  -o  filename.s

    将预处理过程生成的.i后缀的文件转化成汇编文件,里面存储的是相应的汇编代码,这个过程叫做编译。

    gcc  -c  filename.s  -o  filename.o

    将汇编文件中的汇编代码翻译成相应的机器语言,这个过程叫做汇编。

    gcc  filename.o  -o  filename.exe

    这条指令是完成链接这个过程的,它通过链接器ld将运行程序的目标文件和库文件链接在一起,生成最后的可执行文件

    生成可执行文件后,我们就能够调用相应的程序了。

    注意:由于g++和gcc的用法相同,所以在这里我们就不直接介绍了


    gcc和g++的区别

    编译c程序

    熟悉C++的人应该都知道,C++是C语言的超集,编写C/C++代码的时候,有人用gcc,也有人用g++,我们先来看看gcc和g++是否都能编译C++和C代码: 

    Linux环境中gcc和g++的区别详解


     
    上图中,我们发现用gcc和g++分别编译test.c这个c文件,发现都是可执行的,实际上对于C文件gcc和g++所做的事情确实是一样的,g++在编译C文件时调用了gcc.

    编译cpp程序

    既然二者对c程序来说都一样的,那为什么两者都存在而不是只存在一个呢,不要着急,下面我们来看看他们分别是如何来编译C++程序的.
    首先我们直接编译c文件生成可执行程序: 

    Linux环境中gcc和g++的区别详解


     
    我们发现gcc报错,而g++没有报错,并且可以执行。

    下面我们来看看它们的具体步骤以及错误原因:

    预处理

    Linux环境中gcc和g++的区别详解


     
    在预处理阶段两条命令都能够成功,并且我们观察gcc和g++各自产生的.i后缀的文件,它们的内容都是相同的,所以我们能够发现gcc和g++在cpp程序中它们做了相同的事情。

    编译 
     

    Linux环境中gcc和g++的区别详解

    我们发现gcc编译test1.i(.cpp生成)的会出现大篇幅的错误,图片中的错误主要是说无法找到cout函数的库文件,而g++去可以通过编译并且生成汇编文件,这件事情说明gcc无法自动和c++的库文件进行连接,导致了库函数没有申明的错误.

    汇编

    这个过程应该都没有问题,因为这个过程只是将后缀为.s文件中的汇编语言转换成了相应的机器语言。所以gcc和g++应该在这个过程中做了同样的事情。

    链接

    Linux环境中gcc和g++的区别详解


     
    这个阶段也出现了问题,用gcc将.cpp后缀产生的.o文件转换成可执行文件时出现了错误,而g++却可以转换成功并且能够正确执行。这个还是因为gcc无法将库文件与.o后缀的文件关联在一起生成可执行程序,而g++可以完成这项工作。


    总结

    gcc和g++的区别主要是在对cpp文件的编译和链接过程中,因为cpp和c文件中库文件的命名方式不同,win7装机版,那为什么g++既可以编译C又可以编译C++呢,这时因为g++在内部做了处理,默认编译C++程序,但如果遇到C程序,它会直接调用gcc去编译。

    Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx


    以上就是yzc888亚洲城给大家介绍的如何使用Linux环境中gcc和g++的区别详解的方法了,如何使用Linux环境中gcc和g++的区别详解的方法到这里也全部结束了相信大家对如何使用Linux环境中gcc和g++的区别详解的方法都有一定的了解了吧,好了,如果大家还想了解更多的资讯,那就赶紧点击yzc888亚洲城系统官网吧。

    本文来自yzc888亚洲城www.zhuangjiyuan.com如需转载请注明!

    Tag标签| RSS订阅 | 网站地图
    yzc888亚洲城系统之家提供win7装机版xp系统下载win7系统下载、最新Windows10系统下载,专为装机修机员奉上最好的软件、系统、U盘pe、程等平台
    请勿发布违反国家法律法规的内容,会员观点不代表本站立场.本站发布的系统与软件仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,
    否则后果自负,请支持购买微软正版软件! 如侵犯到您的权益,请及时通知我们,我们会及时处理。 粤ICP备15116662号