5-1 动态链接思考(p94)
动态链接的可执行文件非常小,虽然速度稍慢一些。
所谓静态链接,就是函数库的一份拷贝是可执行文件的物理组成部分;而动态链接则是可执行文件只包含文件名,载入器在运行时刻能够寻找程序所需要的函数库。
动态链接的主要目的就是把程序与它们使用的特定函数库版本分离开来。取而代之的是,约定由系统向程序提供一个接口,该接口保持稳定。
优点:
节省磁盘空间,如果不适用动态链接的话,可行方法似乎只有把服务至于内核中,这样内核的体积会非常大。
所有动态链接到某个特定函数库的可执行文件在运行时共享一份拷贝,假设有8个进程都在使用某个函数库,那么第一个进程的mmap调用将使内核把共享对象映射到内存中。其余进程可以共享。
不过即使在静态链接中,整个库文件也并不会全部被装入到可执行文件中,所装入的只是需要的函数。
Last updated
Was this helpful?