静态编译、动态编译、静态链接、动态链接

1、静态编译:

静态编译就是编译器在编译可执行文件时,将可执行文件需要调用的部分从对于动态库中提取出来,链接到可执行文件中去,使可执行文件在运行时不依赖与动态链接库。

2、动态编译

动态编译的可执行文件需要附带一个动态链接库。在执行时,需要调用其动态链接库中的命令。

优点在于:缩小了执行文件的体积,另一方面是加快了编译速度,节省了系统资源。缺点在于:哪怕是只调用了动态链接库中的一两个命令,也需要附带相对庞大的链接库;如果计算机上没有安装相应的动态链接库,则动态编译的可执行文件就不能运行。

3、静态链接

静态链接时指把要调用的函数或过程直接链接到可执行文件中,称为可执行文件中一部分。可执行文件中包含所有需要的代码。

缺点在于当多个程序都调用相同函数时,内存就会存在这个函数的多个拷贝,这样就浪费了内存资源。

5、动态链接

动态链接是相对静态链接而言的,动态链接所调用的函数代码并没有拷贝到应用程序的可执行文件中去,而仅仅是在其中加入了所调用函数的重定位信息。当应用程序被调入内存时,在操作系统的管理下,才在应用程序与相应的动态链接库之间建立链接关系。当要执行动态链接库中的函数时,根据链接产生的重定位信息,操作系统才转去执行相应的函数代码。

静态链接的可执行程序能够在同类操作系统的机器上直接运行。动态链接的可执行文件缺少动态链接库则不可运行。

你可能感兴趣的:(静态编译、动态编译、静态链接、动态链接)