静态链接:
如果函数库的一份副本是可执行文件的物理组成的一部分,那我们称之为静态链接
动态链接:
如果可执行文件只是包含了文件名,让载入器在运行时能够寻找程序所需要的函数库,那么我们称之为动态链接
以上静态链接与动态链接的在宏观上的具体的区别,简单来说是对库的链接时机的不同,那么同阳会造成响应结果!
接下来让我们细致起来看看造成的结果吧!
废话少说,上图!
如图所示便是现象:在生成可执行文件的大小有着显著的区别。
因为静态链接是在编译的时候将库编入到可执行文件中;而动态链接是在执行时才将库链接链接进去,所以不会成为可执行文件的一部分。
这里有个小点:动态链接时外部函数被真正调用之前,运行时载入器并不解析他们。所以即使连接了函数库,如果并没有实际调用,也不会带来额外的开销。
下面我们谈一谈关于动态链接的优点:
尽管动态链接单个执行文件启动时的速度稍受影响,但是动态链接可以从以下两个方面进行提高:
1.动态链接可执行文件比功能相同的的静态链接可执行的文件的体积小。它能够节省磁盘空间和虚拟内存,应为函数库只有在需要时才被映射到进程中。
2.所有动态链接到某个特定函数库的可执行文件在运行时共享该库函数的一个单独副本。操作系统内核保证映射到内存中的函数库可以被所有使用它的进程共享。
分享不易,点个赞先