You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ldd提示library.so => not found但文件存在且LD_LIBRARY_PATH正常的原因排查

满足条件下 library.so => not found 报错的可能场景
  • 架构不匹配:目标so的指令集架构(如x86/ARM、32位/64位)和当前编译的二进制文件架构不兼容。链接器只会匹配对应架构的库,即使文件存在也会直接忽略。同目录下其他库架构匹配所以能正常找到。
  • SONAME不匹配:目标so内部的SONAME字段和二进制中声明的依赖库名称不一致。比如预编译的libgeneric_geometry.so内部SONAME带了版本后缀(如libgeneric_geometry.so.2),但二进制中声明要找的是不带版本的名称,就会匹配失败。同目录其他库的SONAME和依赖声明一致,可正常加载。
  • 文件权限不足:目标so对当前执行用户没有开放读权限,比如属主为root且权限为0600,当前用户无法读取文件,链接器会判定文件不存在。同目录其他库权限配置正常(如0644)所以可正常访问。
  • 符号版本不兼容:预编译的目标so依赖的系统符号(如glibc符号)版本高于当前运行环境的符号版本,链接器会跳过该不兼容的库,判定无符合要求的可用库。同目录其他库的符号版本和当前环境兼容,可正常加载。
  • --as-needed参数导致依赖被丢弃:如果编译时开启了ld的--as-needed参数,链接器会自动丢弃没有被当前二进制用到任何符号的依赖库。如果目标库的预编译版本中导出的符号没有被当前模块调用,依赖就会被丢弃,但是如果上层测试用例用到了该库的符号且没有显式链接该库,运行时就会报错。其他用到了该库符号的模块则会保留依赖,可正常加载。
  • 高优先级搜索路径存在无效同名库:在优先级高于目标库所在目录的搜索路径(如系统默认库路径/lib、/usr/lib的根目录,或是LD_LIBRARY_PATH排在前面的路径)中存在同名的无效库(损坏、空文件、架构不匹配),链接器优先搜到无效库后不会继续往后查找,直接判定找不到。同目录其他库在高优先级路径下无同名无效文件,可正常找到后续路径中的有效库。

内容的提问来源于stack exchange,提问作者Alan Liddell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:00:02