Linux中ldd命令输出里的'=>'符号具体含义是什么?
ldd输出中=>符号的具体含义 先明确核心逻辑:ldd输出里的=>,左边是可执行文件本身记录的依赖需求,右边是动态链接器实际会找到并加载的库路径(括号里的是该库加载到内存中的地址)。但针对ld-linux-x86-64.so.2这类动态链接器本身的情况,有特殊细节需要说明:
- 普通依赖库的常规场景
比如你看到的libm.so.6 => /usr/lib64/libm.so.6:
- 左边的
libm.so.6是编译时写入可执行文件的依赖库名称; - 右边的路径是动态链接器通过系统库搜索路径(比如
/etc/ld.so.conf配置的路径、LD_LIBRARY_PATH环境变量)找到的实际要加载的库文件。
- 动态链接器(
ld-linux-x86-64.so.2)的特殊场景
你遇到的some_absolute_path/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2这种情况,本质是因为ld-linux-x86-64.so.2不是普通依赖库,而是动态链接器本身(也叫interpreter):
- 左边的路径是编译时直接写入可执行文件ELF头的
PT_INTERP段的内容,是内核启动该可执行文件时会优先调用的动态链接器路径; - 右边的
/lib64/ld-linux-x86-64.so.2是当前系统的标准动态链接器路径,ldd会额外显示它,但实际运行时,内核会严格按照可执行文件里指定的左边路径来加载动态链接器,这就是你测试发现左侧文件被选用的原因。
简单总结:=>的核心作用是展示「程序要求的依赖」和「系统实际提供/加载的依赖」的对应关系,只是动态链接器作为特殊的依赖,其实际加载逻辑优先级高于系统默认路径。
内容的提问来源于stack exchange,提问作者onendless
相关产品推荐
相关产品推荐

