运行libhdfs程序提示找不到已存在的libhdfs.so.0.0.0怎么解决?
libhdfs运行时无法加载libhdfs.so.0.0.0的解决方法
该报错的核心原因是:编译时通过-L参数指定的路径仅对链接阶段生效,系统动态链接器运行时不会主动读取HADOOP_HDFS_HOME这类自定义环境变量查找依赖库,需要手动配置动态库的加载路径,可按需求选择以下任意方案:
临时测试生效(单次运行有效)
运行可执行文件前手动注入动态库路径:
LD_LIBRARY_PATH=$HADOOP_HDFS_HOME/lib/native ./a.out
单用户永久生效
编辑当前用户的shell配置文件(如~/.bashrc、~/.zshrc),末尾添加以下内容:
export LD_LIBRARY_PATH=$HADOOP_HDFS_HOME/lib/native:$LD_LIBRARY_PATH
保存后执行source ~/.bashrc(对应bash环境)或source ~/.zshrc(对应zsh环境)即可立即生效,后续该用户运行程序无需额外配置。
全局所有用户生效
- 新建动态库配置文件:
sudo vim /etc/ld.so.conf.d/libhdfs.conf - 在文件中写入libhdfs所在目录的绝对路径,示例:
/opt/hadoop/hdfs/lib/native
- 执行
sudo ldconfig刷新系统动态库缓存,配置对所有用户永久生效。
异常排查
如果上述配置完成后仍报错,可执行以下命令排查兼容性问题:
- 检查库文件架构是否和系统匹配:
file $HADOOP_HDFS_HOME/lib/native/libhdfs.so.0.0.0 - 查看可执行文件的所有依赖库加载情况:
ldd ./a.out
内容的提问来源于stack exchange,提问作者Pratyush Das
相关产品推荐
相关产品推荐

