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)
标签:文件,gcc,++,含义,编译,编译器,下载 From: https://www.cnblogs.com/blackimp/p/17207038.html