读书笔记c专家第5章对链接的思考
第五章:对链接的思考
动态链接允许系统提供一个庞大的函数库集合,可以提供多种有用的服务,但是程序将在运行时寻找他们,而不是把这些函数库的二进制代码作为自身可执行文件的一部分
静态链接:如果函数库的一份拷贝是可执行文件的物理组成部分,称之为静态链接,
动态链接:如果可执行文件只是包含了文件名,让载入器在运行时能够寻找到所需要的函数库,我们称之为动态链接
----------------------------------------------------------------------------------
动态链接的优点:
动态链接的优点是可执行文件的体积可以非常小,虽然运行速度稍微慢一些,但动态链接可以非常有效的利用磁盘空间
动态链接的目的之一是ABI(application binary interface 程序二进制接口),动态链接的主要目的是把程序与他们使用的特定的函数库版本分开,取而代之的是我们约定由系统向程序提供一个接口,该接口保持稳定,不随时间和操作系统的版本变化而变化
----------------------------------------------------------------------------------
动态链接可以从两个方面提高性能:
1:动态链接的可执行文件比功能相同的静态链接可执行文件的体积小,能够节省磁盘空间和虚拟内存,因为函数库只有在需要时才被映射到进程中
2:所有动态链接到某个特定函数库的可执行文件在运行时共享该函数库的一个单独拷贝。操作系统内核保证映射到内存中的含数据库可以被使用它的其他进程共享,提供了更好的I/O和交换空间利用率,节省了物理内存,从而提高了系统的整体性能。如果可执行文件是静态链接的,每个文件都将拥有一份函数库的拷贝,显然极为浪费空间(系统调用mmap()把文件映射到进程的地址空间中)
.so,.ld,
---------------------------------------------------------------------------------------------------------------