首先先了解一个可执行文件生成的过程:
预处理->编译->汇编->链接
.c -> .i ->.s -> .o ->.bin
共有四步:
1、gcc -E main.c -o main.i
头文件展开宏替换,条件编译选择
以“#”开头的命令被称为预处理命令,如包含头文件“#include”宏定义“define”条件编译“#if”"ifdef"等。
2、gcc -S main.i -o main.s
编译:把C语言翻译成汇编语言 main.s
3、as main.s -o main.o
汇编:把汇编语言转换成机器码 main.o,在linux系统上表现为ELF目标文件,使用as(arm-linux-as)汇编器。“反汇编”是指将机器代码转换为汇编代码,在调试程序是常常用到。
4、gcc main.o -o main ./main
链接:
将上步生成的OBJ文件和系统库的OBJ文件、库文件连接起来,最终生成了可以再特定平台运行的可执行文件,使用的是arm-linux-ld
gcc main.c -o mai ./main 一次完成前四步
gcc -c main.c -o main.o 一次完成前三步
gcc main.o -o main ./main