代码改变世界

《程序是怎样跑起来的》第八章

2019-03-26 22:47  薛肖肖  阅读(88)  评论(0编辑  收藏  举报

本章主要介绍了将文件和代码可执行可运行的方法。计算机的存在不就是如此吗,让文件执行出来,让不能执行的文件执行出来。

源文件通过编译转换成可执行文件——可执行文件被加载到内存后的机制——程序运行时内存上的栈和堆

在前面的章节中我们已经知道计算机只认自家人,它不能运行其别人家代码。所以我们要运行别家的代码就必须转换为自家的代码,这时候就是编译器上场的时候了。每个程序语言都有自己专用的编译器,方便将自家文件转换成计算机可执行的文件,就好比最了解你的是你最亲近的人,他们知道怎样对你是好的。编译器首先读入代码内容,再将代码内容转换成本地代码,由计算机运行。交叉编译器,就好比你家的东西,它在你家是有自己的用处的,然送给人家之后人家依然可以通过说明书经过自己的理解再去使用,内容和结果是一样的,只是这个东西通过编译器能够使两个不同的CPU都能读懂。

但是仅依靠编译是不能得到可执行文件的!编译之后还需要进行连接,编译之后的文件是“.obj”目标文件,但这仍然不能够运行,源代码中的某些函数是不可执行的。当程序被启动后找到可执行函数,之后把文件存入内存后边可运行了。

程序的启动是将目标文件记述的所有程序的起始位置相结合的处理内容,是行动起来。必须去链接并和启动结合起来,链接到的是储存多个目标函数的库文件库文件中有我们所需要的函数

作者在这一章运用了很多专用名词,也进行了解释,作者是很棒了。后面又有问答栏目,帮助解答了一些疑惑。