linux编译过程

一 编辑过程如下:
预处理(Preprocessing)
编译(Compilation)
汇编(Assembly)
链接(Linking)

二 过程详述
预处理:首先对源代码文件test.c和相关头文件,如stdio.h等被预编译器编译成一个.i 文件。
作用:预处理的作用主要是读入源代码,检查包含预处理指令的语句和宏定义,并对源代码进行响应的转换。预处理过程还会删除程序中的注释和多余的空白字符。
命令:gcc -E test.c -o test.i

编译:编译成汇编语言
作用:编译过程是把预处理完的文件进行一系列词法分析、语法分析及优化后产生相应的汇编代码文件。
命令:gcc -S test.i -o test.s

汇编:将上面的汇编指令编译生成目标文件
作用:汇编器是将汇编代码转换成机器可以执行的指令,每一个汇编语句几乎都对应一条机器指令。所以汇编器的汇编过程相对于编译器来说比较简单,他没有复杂的语法,也没有语义、也不需要指令优化,只是根据汇编指令和机器指令对照表一一对应翻译就可以了。
命令:gcc -c test.s -o test.o

链接:最终生成可执行文件
作用:链接的主要目的是将程序的目标文件与所需要附加的目标文件链接起来,最终生成可执行文件。附加的目标文件也包括了所需要的库文件(静态链接库和动态链接库)
命令:gcc test.o -o test

也可一个命令完成上面的动作:gcc test.o -o test

猜你喜欢

转载自blog.csdn.net/xie__jin__cheng/article/details/89244206
今日推荐