ld.so

科技工作者之家 2020-11-17

ld.so是Unix或类Unix系统上的动态链接器。

常见变体ld.so常见的有两个变体:

ld.so针对a.out格式的二进制可执行文件

ld-linux.so针对ELF格式的二进制可执行文件

加载顺序当应用程序需要使用动态链接库里的函数时,由ld.so负责加载。搜索动态链接库的顺序依此是

环境变量LD_AOUT_LIBRARY_PATH(a.out格式)、LD_LIBRARY_PATH(ELF格式);在Linux中,LD_PRELOAD指定的目录具有最高优先权。

缓存文件/etc/ld.so.cache。此为上述环境变量指定目录的二进制索引文件。更新缓存的命令是ldconfig。

默认目录,先在/lib中寻找,再到/usr/lib中寻找1

安全性骇客可以通过修改上述环境变量,让具有特权的应用程序加载恶意动态链接库,从而导致攻击行为。所以,对于setuid/setgid应用程序,动态链接器只在默认目录中寻找已被setgid的动态链接库。

动态链接库动态链接库是微软公司在微软视窗操作系统中实现共享函数库概念的一种实现方式。这些库函数的扩展名是.DLL、.OCX(包含ActiveX控制的库)或者.DRV(旧式的系统驱动程序)2。

所谓动态链接,就是把一些经常会共用的代码(静态链接的OBJ程序库)制作成DLL档,当可执行文件调用到DLL档内的函数时,Windows操作系统才会把DLL档加载存储器内,DLL档本身的结构就是可执行档,当程序有需求时函数才进行链接。透过动态链接方式,存储器浪费的情形将可大幅降低。静态链接库则是直接链接到可执行文件。

DLL的文件格式与视窗EXE文件一样——也就是说,等同于32位视窗的可移植执行文件(PE)和16位视窗的New Executable(NE)。作为EXE格式,DLL可以包括源代码、数据和资源的多种组合。

在更广泛的意义上说,任何同样文件格式的电脑文件都可以称作资源DLL。这样的DLL的例子有扩展名为ICL的图标库、扩展名为FON和FOT的字体文件。

本词条内容贡献者为:

李航 - 副教授 - 西南大学

科技工作者之家

科技工作者之家APP是专注科技人才,知识分享与人才交流的服务平台。