C语言编译流程-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

C语言编译流程

简介:

 

 

无论是高级程序设计语言还是专用程序设计语言,都不能被计算机系统直接识别,用这些语言所编写的程序代码称为源程序,源程序需要通过预先设计好的专用程序进行转换,转换为计算机系统可以识别的机器指令,然后才能交由计算机系统执行。

编辑是程序员通过编辑软件录入源代码的过程。
编译是文件录入后,使用编译程序对源文件进行编译,目标文件已经是二进制的机器代码了。
一方面有些程序使用频率高,一般程序员难以自行开发,因此编译系统通常将这些功能预先编译好,以程序库的形式提供给程序员使用。
另一方面,待开发的程序可能不只一个源文件组成,而是由多个源文件构成的,经过编译后,每个源文件生成一个不完整的目标文件,将这些目标文件拼在一起,才能构成整个目标文件。
链接过程就是对组成整个程序的各个目标文件,程序库进行封装,生成最终的目标程序的过程。

 

C语言编译流程:

预处理-->编译-->汇编-->链接 -->a.out

预处理是把宏定义的指令信息拷贝到源程序中,进行头文件替换,不检查语法错误。

可以通过gcc编译命令【gcc -E  源文件(.c) -o 生成文件(.i)】 生成.i文件查看。

编译通过gcc编译命令[gcc -S 预处理文件(.i文件)]命令编译,这时会检查语法错误。生成.s文件。

汇编把文本文件编译成机器的二进制文件。通过gcc命令【gcc -c .s文件】,生成.o的文件。

链接是把多个.o的文件,链接成一个可执行的动态文件。输出.out文件。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: