程序编译流程

C/C++程序的基本编译流程:

test.c --预处理--test.i--编译--test.s--汇编--test.o--链接--test.exe


关于程序编译的一些规范和方法,首先把源文件编译程中间代码文件,Windows平台下是.obj文件,UNIX下是.o文件即Object File,这一动作叫做编译(compile);然后把编译得到的中间代码文件合成为可执行文件,这个动作叫做链接(link)。

编译时:编译器需要确定代码语法的正确,函数与变量声明的正确性。一般需要我们告诉编译器头文件的所在位置(头文件中声明,C/C++文件中定义),如果语法正确,编译器就可以编译出中间目标文件。一般情况下,每个源文件对应于一个中间目标文件。

链接时:链接函数和全局变量,可以使用中间目标文件来链接我们的应用程序。链接器只关心中间目标文件(Object File),如果源文件很多,编译产生的中间目标文件过多,而链接时需要指出中间目标文件名,这对于编译不方便,故需要给中间目标文件打包,Windows下这种包称为“库文件”(Library File),即.lib文件,UNIX下为Archive File,也就是.a文件。

总结:源文件首先编译为中间目标文件,链接中间目标文件生成可执行文件。编译时,编译器只检测语法,函数和变量是否被声明。如果函数未被声明,编译器会给出警告,但可以生成Object File。在链接程序时,连接器会在中间目标文件中找函数的实现,如果没找到,那就报链接错误(Linker Error)。


之后会介绍一下makefile

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值