我一直想知道。我知道编译器会将您编写的代码转换为二进制文件,但是链接程序会做什么?他们一直是我的谜。我大致了解什么是“链接”。这是将对库和框架的引用添加到二进制文件中的时候。除此之外,我什么都不懂。对我来说,它“有效”。我也了解动态链接的基础知识,但没有什么太深的。有人可以解释一下这些条款吗?
3 回答
慕妹3242003
TA贡献1824条经验 获得超6个赞
在像“ C”这样的语言中,传统上,各个代码模块被单独编译为目标代码的blob,除了在模块外部进行的所有引用(即对库或其他模块)具有引用之外,还可以在各个方面执行尚未解决(即,它们是空白,正在等待有人来进行所有连接)。
链接器所做的是一起查看所有模块,查看每个模块需要连接到外部本身的内容,并查看它正在导出的所有内容。然后修复所有问题,并生成最终的可执行文件,然后可以运行该可执行文件。
在动态链接还在进行的地方,链接器的输出仍然无法运行-仍然有一些对外部库的引用尚未解析,并且它们在加载应用程序时由OS解析。甚至在运行过程中更晚)。
- 3 回答
- 0 关注
- 377 浏览
添加回答
举报
0/150
提交
取消