ID:嵌入式情报局
作者:情报小哥
1GCC编译器简介
GCC编译器(GNU C Compiler)是GNU开发的一款多平台编译器,根据名字GCC是一款编译C程序的编译器。但随着该编译器的扩展逐渐支持多平台、多语言的编译套件(GUN Compiler Colloction )。
2什么是编译器
编译器并不是什么高级的东西,仅仅只是一个根据相应平台要求把用户所编写的代码删除、修改、翻译等等处理后生成对应的可执行文件的一种软件程序,其本质也是属于软件,所以大家可以把编译器看成一个翻译软件。
3交叉编译器
在嵌入式Linux开发过程中,比如我们开发ARM平台上的运行程序,一般会在windows平台上进行代码的编译并生成对应的可执行文件烧录到对应的平台中运行,然而这个时候使用编译器就是交叉编译器。
4为何需使用交叉编译
嵌入式相比计算机最大的区别个人觉得在于资源分配上,相对而言嵌入式平台的运行速度、内存大小等等都比计算机平台小很多,既然编译器也是软件那就需要占用一定的资源,随着编译器的扩展需要的硬件平台要求也提高了,所以一般的嵌入式平台难以满足编译要求,不过对于资源丰富,性能强劲的平台当然另当别论了。
所以为了满足在PC上就可以开发嵌入式软件就有了前面所提到的交叉编译环境,编译器可以通过被指定所要运行的目标平台来对相应程序进行编译生成目标平台的可执行文件,当然此时所生成的可执行文件不可在当前环境下运行。
5编译的基本流程
既然学习Linux应用编程,那么必定需要将平时所编写的程序通过编译器最终生成可执行文件,下面大致看看GCC如何编译程序的:
编译过程解析1)预处理阶段:主要对源文件进行文件包含和预处理语句的分析处理;
2)编译阶段:把预处理完的.i文件进行一系列词法分析、语法分析、语义分析以及优化后生成相应的汇编代码文件;
3)汇编阶段:使用汇编器将汇编代码转换成机器可以执行的指令并生成.o文件;
4)链接阶段:使用链接器把所有的目标文件和库文件链接起来放在合适的位置生成.out可执行文件。
6简单体验一下GCC
下面小哥就简单的在ubuntu下面写了一个.c程序并使用gcc编译运行,其实与我们平时在windows环境中编译运行类似,仅仅只是把windows点击按钮换成了对应的命令行罢了。
长按前往图中包含的公众号关注