什么是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编译过程相关推荐

  1. Linux下Gcc 的编译过程

    在linux下开发难免会用到gcc编译.GCC(GNU Compiler Collection.GNU编译器套装),是由 GNU 开发的编程语言编译器.它是GNU编译器套装以GPL许可证所发行的自由软 ...

  2. GCC/G++编译过程

    GCC编译过程 # 编写一个最简单的C++程序 $ cat hello.cpp int main() {return 0; }# -v选项可以打印出详细的编译过程,以及编译命令. $ gcc -v - ...

  3. linux下gcc的编译过程详解

    Linux系统下的Gcc(GNU C Compiler)是GNU推出的功能强大.性能优越的多平台编译器,是GNU的代表作品之一.gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一 ...

  4. 深度剖析“GCC编译器编译过程”

    (这张图是本人画的并非网络图,如果有编译过程没有提到的可以提出来) 首先说说第一步 一.预编译 1.配置编译器环境  编译器在编译之前要运行配置文件通常叫configure的配置文件,一般这个配置文件 ...

  5. GCC的编译过程以及其同盟成员和ELF文件的分析

    文章目录 一.GCC的同盟成员介绍 1.GCC的介绍 2.同盟成员之Binutils 3.同盟成员之C 运行库 二.GCC的详细编译过程 1.编译的简介 2.预处理(Preprocessing) 3. ...

  6. Linux 的GCC的编译过程及方式

    GCC的使用 文章目录 GCC的使用 前言 一.编译过程分析 二.Linux中的编译链接 1.1 预编译阶段 1.2 编译阶段 1.3 汇编阶段 1.4 链接阶段 1.5 补充 二.编译链接命令 三. ...

  7. 【gcc/g++】1.编译器, 编译过程和基本参数

    "木叶飞舞之处" 一, gcc编译器 二, gcc的编译过程 1--完整版 1. 预处理 2. 编译 3. 汇编 4. 链接: 2--简化版 简化编译过程 3--编译完成 三, g ...

  8. Linux中gcc的编译、静态库和动态库的制作

    欢迎大家关注笔者,你的关注是我持续更博的最大动力 Linux中gcc的编译.静态库.动态库 文章目录: 1 gcc的编译过程 1.1 gcc的编译过程 1.2 gcc的常用参数 2 gcc 静态库的制 ...

  9. 嵌入式c语言1--GCC和编译过程

    目录 GCC概述 编译过程 GCC概述 GCC:GNU C Compiler GNU是一个自由的操作系统,其内容软件完全以GPL方式发布.GPL其实就是开源的意思.随着语言越来越多,慢慢的变成了GNU ...

最新文章

  1. tablefunc 行转列
  2. 关于标准库中的ptr_fun/binary_function/bind1st/bind2nd
  3. Linux下的实模式和保护模式
  4. 三维ICP-SVD配准
  5. 一种增强的md5加密算法
  6. Java程序猿必须掌握的重点之一:Lock锁
  7. Numpy系列(一)array对象以及创建array的方法总结
  8. How to study Watir?
  9. [C#] UTF-8 ENCODING=QUOTED-PRINTABLE 的解码和编码
  10. 理解运放的虚断和虚短
  11. sap 双计量单位_采购订单单位与基本计量单位不一致问题案例
  12. Android 进阶——性能优化之借助adb shell ps /top 指令详细分析进程
  13. 一篇让小百彻底搞懂性能调优
  14. Oralce Autovue Web Server (Servlet)启动异常
  15. 推特用户曝Win10版微信截图 微信或将回归Win系统
  16. VelocityEngine 和Velocity类解析
  17. 计算机主机无反应,电脑突然开不了机、主机没反应、不显示,几个方法轻松解决...
  18. OverTheWire的bandit游戏1
  19. 老macbook升级新版本(Big sur、Monterey)
  20. 《大学两年的摸爬滚打:新征程》

热门文章

  1. 【设计学-Part1】世界工艺美术史自用笔记
  2. 腾讯一季度总酬金成本超 204.01 亿元
  3. 互质阵的虚拟阵列推导
  4. PropertyDescriptor 类
  5. 地址池命令 思科理由_在Cisco路由器上建立一个名为zw100的DHCP地址池,地址池的IP地址..._考试资料网...
  6. 浅谈 PostgreSQL 的 timestamp 类型
  7. 内皮细胞培养基 LONZA EGM-2-内皮细胞培养基说明书
  8. JAVA开发之 1-JAVA语言发展史
  9. 二十四史全译本03-后汉书
  10. UI设计师常去的网站