NixOS下ldd提示.so库未找到但RUNPATH已包含对应库路径
问题核心原因
你当前核查的是ld64的RUNPATH配置,而缺失依赖的目标程序是lldb,它依赖的libpython2.7.so.1.0是liblldb.so.10git的间接依赖。动态链接器查找依赖时,每个ELF文件(可执行文件、动态库)的RUNPATH配置独立生效,ld64的RUNPATH不会影响lldb及其依赖库的查找逻辑,这是该问题最常见的诱因。
排查步骤
你可以按以下顺序验证问题:
- 先核查
lldb可执行文件自身的RUNPATH
readelf -d ./lldb | rg RUNPATH
- 再核查间接依赖的载体
liblldb.so.10git的RUNPATH
readelf -d /nix/store/nn8pr7xzam0rz7fq95x9dpi087xazsnv-theos/share/theos/toolchain/linux/iphone/usr/lib/liblldb.so.10git | rg RUNPATH
如果上述两个输出中没有包含Python2.7库的存储路径,就会出现ldd提示找不到库的情况。
其他可能的诱因
如果上述两个文件的RUNPATH已经包含对应路径,可排查以下问题:
- 验证库的SONAME是否匹配:执行以下命令查看目标库的SONAME是否与依赖声明完全一致
readelf -d /nix/store/nvx0l614cv661i5zz6w3j3y2w1xzppv1-python-2.7.18/lib/libpython2.7.so.1.0 | grep SONAME
- 排除权限问题:确认运行ldd的用户对Python2.7的库路径及库文件有可读权限
内容的提问来源于stack exchange,提问作者Enrico Borba
相关产品推荐
相关产品推荐

