忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(1)GCC介绍及C语言编译过程
来源:互联网 发布:知乎如何将答案离线 编辑:程序博客网 时间:2024/06/06 20:28
一、GCC基本介绍
GCC(GNU Compiler Collection,GNU编译器套装),是一套由GNU开发的编程语言编译器。它是一套以GPL及LGPL许可证所发布的自由软件,也是GNU计划的关键部分,亦是自由的类Unix及苹果计算机Mac OS X 操作系统的标准编译器。GCC(特别是其中的C语言编译器)也常被认为是跨平台编译器的事实标准。GCC原名为GNU C语言编译器(GNU C Compiler),因为它原本只能处理C语言。GCC很快地扩展,变得可处理C++。之后也变得可处理Fortran、Pascal、Objective-C、Java、Ada,以及Go与其他语言。
二、作者介绍
GCC是由理查德·马修·斯托曼在1985年开始的。他首先扩增一个旧有的编译器,使它能编译C,这个编译器一开始是以Pastel语言所写的。Pastel是一个不可移植的Pascal语言特殊版,这个编译器也只能编译Pastel语言。为了让自由软件有一个编译器,后来此编译器由斯托曼和Len Tower在1987年以C语言重写并成为GNU项目的编译器。GCC的创建者由自由软件基金会直接管理。
斯托曼1953年出生于美国纽约曼哈顿地区的犹太人家庭,1971年进入哈佛大学学习,同年受聘于麻省理工学院人工智能实验室(AI Laboratory),成为一名职业黑客。
在AI实验室工作期间,斯托曼开发了多种今后影响深远的软件,其中最著名的就是Emacs。斯托曼在AI是一名典型的黑客,是整个黑客文化的一份子。
然而进入八十年代后,黑客社群在软件工业商业化的强大压力下日渐土崩瓦解,甚至连AI实验室的许多黑客也组成了Symbolic公司,试图以专利软件来取代实验室中黑客文化的产物——可自由流通的软件。
斯托曼对此感到气愤与无奈。在对Symbolic进行了一段时间的抗争后,他于1985年发表了著名的GNU宣言,正式宣布要开始进行一项宏伟的计划:创造一套完全自由,兼容于Unix的操作系统GNU(GNU's Not Unix!)。之后他又建立了自由软件基金会来协助该计划。
他于1989年与一群律师起草了广为使用的GNU通用公共协议证书,创造性地提出了“Copyleft”的概念。 同时,GNU计划中除了最关键的Hurd操作系统内核之外,其他绝大多数软件已经完成。
三、GCC的处理过程
这个阶段用来处理所有的预处理指令,所有的预处理指令会将程序变成另外一个样子。例如有一个init.c文件上面的myhead是自定义的一个头文件,如下:预处理c语言的命令为:gcc -E
(3)链接对预处理后的代码进行翻译工作,得到计算机所认识的格式(编译后的文件称为目标文件,扩展名是.o)编译的命令为:gcc -c可以看到编译后会产生一个hello.o文件,这个就是计算机可以识别的二进制文件。
把所有的目标文件和其他必要的文件合并在一起得到最终的可执行文件(链接后的文件称为可执行文件,扩展名为.out)可以直接使用gcc完成上面三步,另外还有一个-o参数用来指定生成的文件名。
另外GCC还有一个选项来选择编译的c语言标准-std=c89/-std=c99 用来指定编译所遵循的C语言标准(缺省是c89标准)
- 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(1)GCC介绍及C语言编译过程
- 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(2)准备知识
- 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(3)输入输出函数
- 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(4)for == while ?
- 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(5)有趣的指针
- 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(6)动态内存分配
- 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(7)结构体
- 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(5)有趣的指针
- 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(8)枚举、补码
- 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(9)链表
- C语言学习(1)---Gcc介绍及编译
- C语言再学习 -- GCC编译过程
- GCC之C 语言编译过程
- GCC之C 语言编译过程
- GCC之C 语言编译过程
- gcc编译C语言
- 重学c语言系列一(gcc编译过程)
- C语言 编译链接过程介绍
- linux学习不错的网站
- Nyoj-189 兔子的烦恼(一)
- MVC与开源框架
- 基于TQ2440的u-boot 1.1.6移植(一)(文件裁剪、时钟修改)
- C++ error: 无法启动此程序,因为计算机丢失liblas.dll
- 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(1)GCC介绍及C语言编译过程
- bombing:6证书认证系统设计与实现-改进与思考
- Ubuntu 12.04 LTS 中文输入法安装
- POJ 2635 高精度MOD 和 乱搞的进制转换
- ZOJ Problem Set - 1048 Financial Management
- pat advanced 1046
- [Linux] linux boot参数
- opencv 绘制图像直方图
- DIV中文字(文本)的自动换行