现在的位置: 首页 > 综合 > 正文

静态编译/动态编译 静态链接/动态链接 静态库/动态库

2013年10月23日 ⁄ 综合 ⁄ 共 588字 ⁄ 字号 评论关闭

记录一下,下次搞不清可以来看看。

静态编译/动态编译

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

动态编译:动态编译的可执行文件需要附带一个动态链接库,在执行时,需要调用其动态链接库中的命令。所以其优点是缩小了执行文件本身的体积,另一方面是加快了编译速度。缺点是哪怕是很简单的程序,只用到了链接库中的一两条命令,也需要附带一个相对庞大的链接库;二是如果其他计算机上没有安装对应的运行库,则用动态编译的可执行文件就不能运行。

PS:静态链接与动态链接的优缺点相互对应。

静态链接/动态链接

静态链接:静态链接是由链接器在链接时将库的内容加入到可执行程序中的做法。链接器是一个独立程序,将一个或多个库或目标文件链到一块生成可执行程序。

动态链接:在可执行文件装载或运行时,由操作系统的装载程序加载库。

动态库/静态库

静态库:静态库在程序的链接阶段被复制到了程序中,和程序运行时没有关系。其特点是,可执行文件中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。

动态库:动态库是在程序运行时由系统动态加载到内存中共程序调用,在链接阶段没有被复制到程序中。使用动态库的有点是系统只需载入一次动态库,不同程序可以得到内存中相同的动态库的复本,因此节省了很多内存。

抱歉!评论已关闭.