什么是GCC? GCC编译过程
什么是GCC? 最简单的回答就是Linux 下的C/C++ 编译器。
其实一开始的确是这样的,GCC 原名为GUN C 语言编译器( GNU C Compiler), 原本只能处理编译C语言。
但是后来GCC发展壮大了,可以编译C++, Fortran,Pascal,Objective-C, Java,Ada,Go以及各类处理器构架上的汇编语言,
后来它就改名叫GNU 编译器套件(GNU Compiler Collection), 虽然改了名,但是简称还是GCC,这就是现在的GCC了。
归纳下:GCC 是一个编译器套件,可以编译好多种语言。
我这里主要就是学习GCC 编译器种的一种,对C/C++ 代码的编译。
一般Linux 操作系统默认都安装了GCC。打开终端窗口输入: gcc -v 就可查看GCC编译器套件的信息。
先写个Hello World 出来,创建一个hello.c 文件,内容如下
#include<stdio.h>
int main(void){
printf("Hello, GCC!\n");
return 0;
}
编译命令为: gcc hello.c -o hello (也可以简写为 gcc hello.c)
编译成功后,就会生成一个可执行的文件hello
终端里面输入命令:./hello 即可以看到执行的结果了("Hello, GCC!")。
2: 编译hello.c ,就只用了一条命令,但实际上,看似很简单的这一步操作,却隐藏了he你多操心细节。GCC的编译过程是相当复杂的。
gcc hello.c -o hello 这一条命令,就干了上面那多事。如果不嫌麻烦,我们也可以一步一步来编译。
1:预处理。 命令:gcc -E hello.c -o hello.i 即可得到 预处理后的文件hello.i (其实还是C代码文件), 有兴趣的可以用 cat hello.i 看看里面内容。
2:编译。命令:gcc -S hello.i 就是把上面的hello.i 文件,编译为汇编语言。懂ASM的人,可以去看。
3:汇编。命令:gcc -c hello.s 。把hello.i 这个汇编文件编译成机器码,将会得到hello.o 文件。
4: 链接。命令:gcc hello.o 尽管3得到了机器码,但是文件却还是不可以运行,必须要经过链接才能运行。
总结下: 预处理就是预处理就是处理引入的头文件,定义的宏等。 “编译”就是把C/C++代码编译成汇编语言。“汇编”就是把汇编代码编译成机器码。最后“链接”生成可以执行的机器码。
什么是GCC? GCC编译过程相关推荐
- Linux下Gcc 的编译过程
在linux下开发难免会用到gcc编译.GCC(GNU Compiler Collection.GNU编译器套装),是由 GNU 开发的编程语言编译器.它是GNU编译器套装以GPL许可证所发行的自由软 ...
- GCC/G++编译过程
GCC编译过程 # 编写一个最简单的C++程序 $ cat hello.cpp int main() {return 0; }# -v选项可以打印出详细的编译过程,以及编译命令. $ gcc -v - ...
- linux下gcc的编译过程详解
Linux系统下的Gcc(GNU C Compiler)是GNU推出的功能强大.性能优越的多平台编译器,是GNU的代表作品之一.gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一 ...
- 深度剖析“GCC编译器编译过程”
(这张图是本人画的并非网络图,如果有编译过程没有提到的可以提出来) 首先说说第一步 一.预编译 1.配置编译器环境 编译器在编译之前要运行配置文件通常叫configure的配置文件,一般这个配置文件 ...
- GCC的编译过程以及其同盟成员和ELF文件的分析
文章目录 一.GCC的同盟成员介绍 1.GCC的介绍 2.同盟成员之Binutils 3.同盟成员之C 运行库 二.GCC的详细编译过程 1.编译的简介 2.预处理(Preprocessing) 3. ...
- Linux 的GCC的编译过程及方式
GCC的使用 文章目录 GCC的使用 前言 一.编译过程分析 二.Linux中的编译链接 1.1 预编译阶段 1.2 编译阶段 1.3 汇编阶段 1.4 链接阶段 1.5 补充 二.编译链接命令 三. ...
- 【gcc/g++】1.编译器, 编译过程和基本参数
"木叶飞舞之处" 一, gcc编译器 二, gcc的编译过程 1--完整版 1. 预处理 2. 编译 3. 汇编 4. 链接: 2--简化版 简化编译过程 3--编译完成 三, g ...
- Linux中gcc的编译、静态库和动态库的制作
欢迎大家关注笔者,你的关注是我持续更博的最大动力 Linux中gcc的编译.静态库.动态库 文章目录: 1 gcc的编译过程 1.1 gcc的编译过程 1.2 gcc的常用参数 2 gcc 静态库的制 ...
- 嵌入式c语言1--GCC和编译过程
目录 GCC概述 编译过程 GCC概述 GCC:GNU C Compiler GNU是一个自由的操作系统,其内容软件完全以GPL方式发布.GPL其实就是开源的意思.随着语言越来越多,慢慢的变成了GNU ...
最新文章
- tablefunc 行转列
- 关于标准库中的ptr_fun/binary_function/bind1st/bind2nd
- Linux下的实模式和保护模式
- 三维ICP-SVD配准
- 一种增强的md5加密算法
- Java程序猿必须掌握的重点之一:Lock锁
- Numpy系列(一)array对象以及创建array的方法总结
- How to study Watir?
- [C#] UTF-8 ENCODING=QUOTED-PRINTABLE 的解码和编码
- 理解运放的虚断和虚短
- sap 双计量单位_采购订单单位与基本计量单位不一致问题案例
- Android 进阶——性能优化之借助adb shell ps /top 指令详细分析进程
- 一篇让小百彻底搞懂性能调优
- Oralce Autovue Web Server (Servlet)启动异常
- 推特用户曝Win10版微信截图 微信或将回归Win系统
- VelocityEngine 和Velocity类解析
- 计算机主机无反应,电脑突然开不了机、主机没反应、不显示,几个方法轻松解决...
- OverTheWire的bandit游戏1
- 老macbook升级新版本(Big sur、Monterey)
- 《大学两年的摸爬滚打:新征程》
热门文章
- 【设计学-Part1】世界工艺美术史自用笔记
- 腾讯一季度总酬金成本超 204.01 亿元
- 互质阵的虚拟阵列推导
- PropertyDescriptor 类
- 地址池命令 思科理由_在Cisco路由器上建立一个名为zw100的DHCP地址池,地址池的IP地址..._考试资料网...
- 浅谈 PostgreSQL 的 timestamp 类型
- 内皮细胞培养基 LONZA EGM-2-内皮细胞培养基说明书
- JAVA开发之 1-JAVA语言发展史
- 二十四史全译本03-后汉书
- UI设计师常去的网站