gcc g++ 含义与区别

gcc g++ 含义与区别


一、什么是gcc

​ GCC:GNU Compiler Collection(GNU 编译器集合),在为Linux开发应用程序时,绝大多数情况下使用的都是C语言,因此几乎每一位Linux程序员面临的首要问题都是如何灵活运用C编译器。目前 Linux下最常用的C语言编译器是GCC(GNU Compiler Collection),它是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。GCC不仅功能非常强大,结构也异常灵活。最值得称道的一点就是它可以通过不同的前端模块来支持各种语言,如Java、 Fortran、Pascal、Modula-3和Ada等。

1.1 gcc与g++的安装

# 安装软件必须要有管理员权限
# Ubuntu
$ sudo apt update           # 更新本地的软件下载列表,得到最新的下载地址
$ sudo apt install gcc      # 通过下载列表中提供的地址下载gcc安装包,并安装
$ sudo apt install g++      # 通过下载列表中提供的地址下载g++安装包,并安装

# Centos
$ sudo yum update           # 更新本地的软件下载列表,得到最新的下载地址
$ sudo yum insrall gcc      # 通过下载列表中提供的地址下载gcc安装包,并安装
$ sudo yum install g++      # 通过下载列表中提供的地址下载g++安装包,并安装

​ gcc安装完毕后,可以通过gcc --version命令查看版本:

二、gcc/g++工作流程

​ GCC 编译器对程序的编译下图所示,分为 4 个阶段:预处理(预编译)、编译和优化、汇编和链接。GCC 的编译器可以将这 4 个步骤合并成一个。

预处理:在这个阶段主要做了三件事:展开头文件、宏替换、去掉注释。这个阶段需要gcc调用预处理器来完成,最终得到的还是源文文本格式;

编译:这个阶段需要gcc调用编译器对文件进行编译,最终得到一个汇编文件;

汇编:这个阶段需要gcc调用汇编器对文件进行汇编,最终得到一个二进制文件;

链接:这个阶段需要gcc调用链接器对程序需要调用的库进行链接,最终得到一个可执行的二进制文件;

gcc编译选项 说明
-E 预处理指定的源文件,不进行编译
-S 编译指定的文件,但不进行汇编
-c 编译、汇编指定的源文件,但是不进行链接
-o [file1] [file2] / [file2] -o [file1] 将文件file2编译可执行文件file1
-I directory 指定include包含文件的搜索目录
-g 在编译的时候,生成调试信息,该程序可以被调试器调试
-D 在程序编译的时候,指定一个宏

2.1 g++编译示例

源码

第一步:对源文件进行预处理,需要使用g++参数为 -E

第二步:与便于处理之后的文件,需要使用gcc参数-S

第三步:对得到的汇编文件进行汇编,需要使用gcc参数为-c

第四步:将得到的二进制文件和标准库紧致链接,得到可执行的二进制文件,不需要任何参数

第五步:运行

在使用gcc编译程序的时候可以通过参数控制内部自动执行几个步骤(命令: gcc/g++ xxx.cpp -o xxxexe)

posted @ 2023-03-11 21:30  H黑先生  阅读(163)  评论(0)    收藏  举报