Linux的gcc和g++的区别

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

工具用法介绍

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

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

  1. gcc -E filename.c -o filename.i
    将c文件转化成C++文件,这个过程也叫做预处理过程
  2. gcc -S filename.i -o filename.s
    将预处理过程生成的.i后缀的文件转化成汇编文件,里面存储的是相应的汇编代码,这个过程叫做编译。
  3. gcc -c filename.s -o filename.o
    将汇编文件中的汇编代码翻译成相应的机器语言,这个过程叫做汇编。
  4. gcc filename.o -o filename.exe
    这条指令是完成链接这个过程的,它通过链接器ld将运行程序的目标文件和库文件链接在一起,生成最后的可执行文件
  5. 生成可执行文件后,我们就能够调用相应的程序了。
    注意:由于g++和gcc的用法相同,所以在这里我们就不直接介绍了

gcc和g++的区别

编译c程序

熟悉C++的人应该都知道,C++是C语言的超集,编写C/C++代码的时候,有人用gcc,也有人用g++,我们先来看看gcc和g++是否都能编译C++和C代码:
这里写图片描述
上图中,我们发现用gcc和g++分别编译test.c这个c文件,发现都是可执行的,实际上对于C文件gcc和g++所做的事情确实是一样的,g++在编译C文件时调用了gcc.

编译cpp程序

既然二者对c程序来说都一样的,那为什么两者都存在而不是只存在一个呢,不要着急,下面我们来看看他们分别是如何来编译C++程序的.
首先我们直接编译c文件生成可执行程序:
这里写图片描述
我们发现gcc报错,而g++没有报错,并且可以执行。

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

  1. 预处理
    这里写图片描述
    在预处理阶段两条命令都能够成功,并且我们观察gcc和g++各自产生的.i后缀的文件,它们的内容都是相同的,所以我们能够发现gcc和g++在cpp程序中它们做了相同的事情。
  2. 编译
    这里写图片描述
    我们发现gcc编译test1.i(.cpp生成)的会出现大篇幅的错误,图片中的错误主要是说无法找到cout函数的库文件,而g++去可以通过编译并且生成汇编文件,这件事情说明gcc无法自动和c++的库文件进行连接,导致了库函数没有申明的错误.
  3. 汇编
    这个过程应该都没有问题,因为这个过程只是将后缀为.s文件中的汇编语言转换成了相应的机器语言。所以gcc和g++应该在这个过程中做了同样的事情。
  4. 链接
    这里写图片描述
    这个阶段也出现了问题,用gcc将.cpp后缀产生的.o文件转换成可执行文件时出现了错误,而g++却可以转换成功并且能够正确执行。这个还是因为gcc无法将库文件与.o后缀的文件关联在一起生成可执行程序,而g++可以完成这项工作。

总结

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

  • 81
    点赞
  • 224
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: Linux离线安装GCCG++的步骤如下: 1. 下载GCCG++的源代码包,可以从官方网站或镜像站点下载。 2. 解压源代码包,进入解压后的目录。 3. 执行configure命令,生成Makefile文件。命令格式为:./configure --prefix=/usr/local/gcc --disable-multilib。 4. 执行make命令,编译源代码。命令格式为:make -j4。 5. 执行make install命令,安装GCCG++。命令格式为:make install。 6. 配置环境变量,将GCCG++的路径添加到PATH环境变量中。可以在/etc/profile文件中添加以下内容: export PATH=/usr/local/gcc/bin:$PATH 7. 验证安装是否成功,执行gcc -v和g++ -v命令,查看版本信息。 以上就是Linux离线安装GCCG++的步骤。 ### 回答2: Linux是一款开源的操作系统,因为其完备的开发工具和庞大的用户群体,它成为了众多开发者的首选。在Linux系统中,gcc和g这两个工具的安装是非常重要的,因为它们是编译和连接程序所必须的。如果你的系统没有连接到互联网,那么你需要进行离线安装。下面是一些步骤,帮助你离线安装gcc和g。 1. 获取安装包 首先需要获取gcc和g的安装包。通常,这些安装包可以从你的Linux发行版的仓库中获得。如果你无法通过互联网获取,你就需要从其他的渠道获取,例如从朋友的电脑或通过移动设备。安装包需要下载并存储在本地。 2. 安装前依赖 在Linux中,一些软件包的安装需要先安装其他的软件包或库,这些依赖的软件包需要在安装前安装。你需要检查你的Linux发行版提供了哪些依赖的软件包,然后将它们逐一地安装。 3. 安装gcc和g 下载好所有的依赖包之后,接下来就需要安装gcc和g了。在终端中,输入以下命令来安装gcc和g: ``` tar -xf gcc_版本号.tar.gz cd gcc_版本号 ./configure --prefix=/usr/local/gcc make make install ``` 以上命令解释: - tar命令解压缩安装包 - cd命令 进入gcc的目录下 - ./configure是运行configure脚本,用于检测系统环境。--prefix选项指定了安装的目录,在这里是/usr/local/gcc。 - make命令用于编译 - make install 用于安装 4. 配置环境变量 在安装完成后,需要设置环境变量,以便系统中任何地方都可以使用gcc和g。在终端中输入以下命令行: ``` echo "export PATH=/usr/local/gcc/bin:$PATH" >> ~/.bashrc source ~/.bashrc ``` 以上命令解释: - echo "export PATH=/usr/local/gcc/bin:$PATH" >> ~/.bashrc,该命令用来将路径/usr/local/gcc/bin加入环境变量中 - source ~/.bashrc 是用于读取.bashrc文件的变动,如果不这样做,改变环境变量是不起作用的。 这些步骤完成后,你的系统中就已经成功安装了gcc和g,你可以在终端中输入gcc或g的命令来验证安装是否成功了。如果你的系统不能连接到互联网,现在已经可以使用gcc和g来编译程序了。 ### 回答3: Linux是一种常用的操作系统,在开发过程中,经常需要使用gcc编译器和g++编译器来进行代码的编译和构建。但是在某些情况下,我们可能需要在没有网络连接的情况下安装这些工具。下面介绍一下在Linux系统中离线安装gccg++编译器的方法。 首先,我们需要准备好gccg++编译器版本的安装文件,可以从官方网站或者镜像网站下载对应版本的安装文件。下载完成后,将安装文件传输到Linux系统中,放在一个目录下,例如/opt/gcc。 接下来,我们需要安装依赖库和工具包。在Linux系统中,gccg++编译器需要依赖一些库和工具包,比如binutils、libmpc、libmpfr、libgmp、mpc-devel、mpfr-devel和gmp-devel等。在没有网络连接的情况下,我们需要手动安装这些依赖库和工具包。 通过以下命令安装依赖库和工具包: yum install -y gcc gcc-c++ binutils libmpc libmpfr libgmp mpc-devel mpfr-devel gmp-devel 安装完成后,我们可以开始离线安装gccg++编译器。 通过以下命令进入/opt/gcc目录: cd /opt/gcc 解压安装文件: tar -zxvf gcc-XX.X.tar.gz 进入解压后的目录: cd gcc-XX.X 创建一个目录,用于编译安装: mkdir build 进入build目录: cd build 通过以下命令配置并编译: ../configure --prefix=/opt/gcc --disable-multilib --enable-languages=c,c++ make make install 这个过程可能需要花费比较长的时间,具体时间取决于系统硬件配置和编译器版本。安装完成后,我们可以通过以下命令查看gccg++编译器版本: /opt/gcc/bin/gcc -v /opt/gcc/bin/g++ -v 至此,我们已经完成了Linux系统中离线安装gccg++编译器的过程。在没有网络连接的情况下,我们可以通过手动安装依赖库和工具包,并下载安装文件进行安装,来使用这些工具进行代码编译和构建。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值