makefile编译时编译正常
使用-L将/home/hduser/hadoop/lib/native目录作为第一个寻找库文件的目录,并用-lhdfs寻找libhdfs.so动态库文件
但是运行时提示无法打开共享库:
检查原因:
之前的第三方库一直是编译安装在/lib或/usr/lib中,而这个目录是已经添加在共享库目录中了的,因此链接时不存在问题。
而此次,未将动态库放入/lib或/usr/lib中,程序运行加载动态库时没有去home/hduser/hadoop/lib/native查找。
解决办法:
1)修改LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/home/hduser/hadoop/lib/native:$LD_LIBRARY_PATH
2)编辑/etc/ld.so.conf
添加/home/hduser/hadoop/lib/native
编辑完成后重新加载动态库路径 /sbin/ldconfig
查看:/sbin/ldconfig –v
加载静态库:如果不想加载动态库,也可以通过-static指定所有链接库全部加载静态库。