arm裸机1期加强版第9课,内容实在太多,如果编辑成一篇文章,估计大家难消化所以我把它拆分为三部分:1.gcc 2.指针,3.Makefile ,今天是第一部分gcc,内容同样适用于arm-linux-gcc。
老规矩,文字无法完整描述视频内容,如果觉得这些文章对你有用,想进一步学习更深层次的干货,请访问http://100ask.taobao.com购买arm裸机1期加强版视频课程。第1节_gcc编译器1_常用选项_编译过程详解
gcc的使用方法gcc [选项] 文件名
gcc常用选项
一个c/c++文件要经过预处理、编译、汇编和链接才能变成可执行文件。
• (1)预处理
C/C++源文件中,以#开头的命令被称为预处理命令,如"#include"、宏定义命令"#define"、条件编译命令"#if、#ifdef"等。
预处理是将包含(include)的文件插入原文件中、将宏定义展开、根据条件编译命令选择要使用的代码,最后将这些东西输出到一个.i文件中并等待进一步处理。
• (2)编译
编译就是把C/C++代码(比如上述的.i文件)翻译成汇编代码。
• (3)汇编
汇编就是将第二步输出的汇编代码翻译成符合一定格式的机器代码,在Linux系统上一般表现为ELF目标文件(OBJ文件)。
反汇编是指将机器代码转换为汇编代码,这在调试程序时常常用到。
• (4)链接
链接就是将上步生成的OBJ文件和系统库的OBJ文件、库文件链接起来,最终生成可以在特定平台运行