通俗形象地说,编译和链接究竟有什
在多道程序环境中,要想将一个用户源程序变为一个可以在内存中执行的程序,通常要经过三步依为 编译,链接,装入
首先是编译,由编译程序将用户源代码编译成若干个目标模块;其次是链接,由链接程序将编译后形成的一组目标模块以及他们所需的库函数链接在一起,形成一个完整的装入模块,由装入程序将装入模块装入内存
编译和链接都是为将用户程序从硬盘上调入内存并将其转换为可执行程序服务的。
用编译器时的compile 就是在进行编译,link就是链接,运行程序时可以看到的。
我对编译的理解是高级语言翻译为电脑可以理解的二进制代码也就是机器语言。
链接下面举例讲。你最好边看边画个内存的图好理解。
如,我...全部
在多道程序环境中,要想将一个用户源程序变为一个可以在内存中执行的程序,通常要经过三步依为 编译,链接,装入
首先是编译,由编译程序将用户源代码编译成若干个目标模块;其次是链接,由链接程序将编译后形成的一组目标模块以及他们所需的库函数链接在一起,形成一个完整的装入模块,由装入程序将装入模块装入内存
编译和链接都是为将用户程序从硬盘上调入内存并将其转换为可执行程序服务的。
用编译器时的compile 就是在进行编译,link就是链接,运行程序时可以看到的。
我对编译的理解是高级语言翻译为电脑可以理解的二进制代码也就是机器语言。
链接下面举例讲。你最好边看边画个内存的图好理解。
如,我们编写了一个程序,编译后,在作业地址空间中所得到目标模块的起始地址通常是0,假设在1000处写了一句load 1,2500 (功能是将2500单元处的数据取至寄存器1)。在多道程序环境下将程序装入内存时并不可能预先知道所编译的模块应该放在内存的何处,假设程序被装入从10000开始的地址,此时2500变成了12500,这里就出现了问题,需要修改指令中的相对地址,此时就需要链接来解决。
这只是链接的一个功能。
链接分为三种,静态链接,装入时动态链接,运行时动态链接。现在流行的是运行时动态链接,这种方法不仅可加快程序的装入过程,而且节省了大量的内存空间
回答完毕!!
。
收起