首先先了解一个可执行文件生成的过程:
预处理->编译->汇编->链接
.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
本文详细介绍了从源代码到可执行文件的四个步骤:预处理、编译、汇编及链接,并解释了每一步中涉及的关键概念和技术。
a&spm=1001.2101.3001.5002&articleId=79351387&d=1&t=3&u=92ee197933414f3e8629d44262216407)
3339

被折叠的 条评论
为什么被折叠?



