可执行文件的生成

菜鸡刚学,写下笔记方便复习。

一个程序的转化处理过程可以如下表示:

.c后缀的源文件 (经过预处理)-> 变成 .i 后缀的源程序 (经过编译)-> .s后缀的汇编语言程序文件 (经过汇编后)-> .o后缀的可重定位目标程序 (经过链接)-> 可执行文件

以c ,i , s结尾的文件都是可读的文本文件。
.o结尾和可执行文件都是二进制文件。

预处理
处理源文件中以 “#” 开头的预编译指令,经过预编译处理后,得到的是以 .i 结尾的预处理文件,他没有了宏定义,仍是一个可读的文本文件,本质上还是C语言的代码。
编译
编译就是将预处理生成的 .i 文件 翻译成 汇编语言代码,该过程就是compile,编译后的文件内容,本质上是汇编语言程序代码。
汇编
经过编译后的文件,本质是汇编语言代码,还是可读的文本文件,但是cpu看不懂他,还需要将他翻译成cpu能读懂的二进制文件,将汇编指令一一对应,转化为机器指令序列。
链接
链接过程是将多个 .o 文件(可重定向目标程序)合并在一起, 生成可执行文件,这是因为主函数里调用了一些标准库里的写好的函数,需要将他们的.o文件合并在一起才能生成可执行文件。

猜你喜欢

转载自blog.csdn.net/qq_43394612/article/details/85007597