c++中的编译链接

1、编译:cpp--->obj


把源文件中的文本形式存在的源代码翻译成机器语言形式的目标文件的过程,在这个过程中,编译器会进行一系列语法检查。


(1)编译单元:每一个CPP文件就是一个编译单元。且每个单元之间是相互独立并且互相不可知。


(2)目标文件:由编译所生成的文件,以机器码的形式包含了编译单元里所有的代码和数据,还有一些其他信息,如未解决符号表、导出符号表和地址重定向表等。


(3)存在形式:二进制


在预编译时,.h头文件会被复制、扩展到包含它的.cpp文件里,然后编译器编译该cpp文件作为一个obj文件,该cpp文件作为一个编译单元独立编译。当编译器将一个工程里所有的cpp文件以分离的方式编译完毕后,再由链接器进行链接成为一个可执行文件。


2、链接


在链接器进行链接的时候,


(1)首先决定各个目标文件在最终可执行文件里的位置。


(2)然后访问所有目标文件的地址重定义表,对记录中的地址进行重定位。


(3)遍历所有目标文件的未解决符号表,并且在导出符号表里查找匹配的 符号,并在未解决符号表中所记录的位置上填写实现地址。


(4)最后把所有的目标文件的内容写在各自的位置上。


(5)作一些其他工作,生成可执行文件。


参考资料:http://blog.csdn.net/jiange_zh/article/details/52187611

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值