注:以下学习内容学习于韦东山老师arm裸机第一期教程
一.编译过程简介
一般C程序编译过程:
预处理->编译->汇编->链接
1.1 预处理: C/C++源文件中,以#开头的命令被称为预处理命令,包括#include,#define,#if,#endif等。
预处理就是将要包含的文件插入到源文件中,将宏定义展开,根据条件编译选择要使用的代码,最后将这些代码输出到一个.i文件中
1.2 编译: 将C/C++代码(比如上述的".i"文件)“翻译”成汇编代码
1.3 汇编: 将汇编代码翻译成一定格式的机器码,在Linux系统上一般为elf文件(OBJ文件)
1.4 链接: 将生成的OBJ文件和系统库的OBJ文件、库文件连接起来,生产可执行文件
以hello.c为例
预处理 编译 汇编 链接
hello.c ------------->hello.i------------------>hello.s--------------->hello.o-------------->elf格式可执行文件
二.gcc使用方法
gcc [选项] 文件名
最简单的方法就是 gcc hello.c
会产生一个a.out的可执行文件