Linux程序编译过程的示例分析
编译一个C语言的程序,首先要将源代码文件(后缀名为.c的文件)编译成目标代码文件(后缀名为.o的文件)。目标代码文件包含有机器码目标代码和其它信息,但是还不能直接运行。编译器将目标代码文件连接成可执行文件(后缀名为.out的文件)。
编译过程分为四个步骤:预处理、编译、汇编、链接。
预处理阶段,预处理器将处理源代码文件,主要做的工作有:处理宏定义、包含文件、条件编译等。预处理之后的文件称为预处理文件,后缀名为.i或.ii。
编译阶段,编译器将预处理文件编译成汇编代码文件,主要做的工作有:词法分析、语法分析、生成中间代码、优化代码、生成目标代码。编译之后的文件称为汇编代码文件,后缀名为.s。
汇编阶段,汇编器将汇编代码文件编译成目标代码文件,主要做的工作有:词法分析、语法分析、生成目标代码。汇编之后的文件称为目标代码文件,后缀名为.o。
链接阶段,链接器将目标代码文件和其它相关文件链接成可执行文件,主要做的工作有:链接库文件、合并目标代码文件、生成可执行文件。链接之后的文件称为可执行文件,后缀名为.out。
编译过程中,如果出现编译错误,则编译过程会被中止,错误信息会被输出。如果编译过程顺利完成,则会生成相应的目标代码文件或可执行文件。
相关文章