程序经过编译后,得到一组目标模块(Object
Module),再经过链接程序将这组目标模块链接起来,形成一个完整的装入模块。如图。经过编译后得到三个目标模块A,B,C,它们的长度分别为L,M,N。其中B和C属于外部调用符号。根据链接时间的不同,程序的链接可分为三种方式:静态链接,装入时动态链接,运行时动态链接
1:静态链接。在程序运行之前,首先将各个目标模块以及所需要的库函数链接成一个完整的装入模块,又称为可执行文件,运行时可直接将它装入主存。
2:装入时链接。用户源程序经过编译后得到一组目标模块,在装入主存时,采用边装入边链接分方式,即在装入一个目标模块时,若需要调用另一个模块,则找出该模块,将它装入主存,并修改目标模块的逻辑地址。
3:运行时动态链接。在很多情况下,由于应用程序每次运行时的条件不同,故需要调用的模块有可能是不相同的。如果将所有目标模块装入主存并链接在一起,就会得到一个非常大的装入模块,其中某些目标模块可能根本就没有条件运行,这样会引起程序装入时间上和主存空间上的浪费。运行时动态链接是指程序执行过程中当需要该目标模块时,才把该模块装入主存并进行链接。
原文:http://www.cnblogs.com/scroll/p/3712711.html