首先了解一下编译的过程:一个源文件经过gcc编译器编译后生成可执行文件其实经历了四个过程:
* 预处理(Pre-processing)
* 编译(Compiling)
* 汇编(Assembling)
* 链接(Linking)
而gcc经过编译后生成的可执行文件(最后也就是一大堆机器码)是在linux操作系统之上运行的,也就是说经过gcc编译器最后生成的一大堆机器码只有Linux操作系统认识,但是我们做ARM裸机实验时Soc上是没有linux操作系统的,所以这时候ARM裸机只认识经过ARM指令集生成的机器码。这时候我们要想让可执行文件在ARM裸机上运行就需要使用arm-linux-gcc (交叉编译工具)编译生成的可执行文件。字面理解arm-linu-gcc的意思也就是编写环境是使用Linux主机编写的,然后编译后要在ARM上运行的可执行文件。