Linux程序运行时加载动态库失败的解决方法
Linux程序运⾏时加载动态库失败的解决⽅法
Linux下不能加载动态库问题
当出现下边异常情况
./test: error while loading shared libraries: libmfs_open.so: cannot open shared object file: No such file or directory
若动态库的路径在(/usr/cluster/.share/lib)
解决办法:
⽅法⼀、在/etc/f⽂件中添加路径,vi /etc/f
添加下边内容
include f.d/*.conf
/usr/cluster/.share/lib
⽅法⼆、在终端输⼊:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/cluster/.share/lib
⽅法三、修改/etc/profile⽂件科比开讲啦
export MPI_HOME=/usr/cluster
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MPI_HOME/.share/lib
在终端执⾏source /etc/profile 使配置⽂件⽣效
程序运⾏时加载动态库失败的解决⽅法
错误提⽰如下:
error while loading shared libraries: libjson.so.0: cannot open shared object file: No such file or directory
原因⼀般有两个,⼀个是操作系统中没有包含该共享库(lib*.so.* ⽂件)或者共享库版本不对。解决办法就是重新下载安装。
另外⼀个原因就是已经安装了该共享库,但是执⾏需要调⽤该共享库的程序的时候,程序按照默认共享库路径不到该共享库⽂件。解决⽅法如下:
如果共享库⽂件安装到了 /lib 或 /usr/lib ⽬录下,那么执⾏⼀下 ldconfig 命令。
ldconfig命令的⽤途, 主要是在默认搜寻⽬录(b和/usrb)以及动态库配置⽂件/etc/f内所列的⽬录下, 搜索出可共享的动态链接库(格式如lib*.so*), 进⽽创建出动态装⼊程序(ld.so)所需的连接和缓存⽂件. 缓存⽂件默认为/etc/ld.so.cache, 此⽂件保存已排好序的动态链接库名字列表.
如果共享库⽂件安装到了 /usr/local/lib (⼀般开源的共享库都会安装到该⽬录下)或者其它⾮ /lib 或 /usr/lib ⽬录下,那么在执⾏ldconfig 命令前,还要把新的共享库⽬录加⼊到共享库配置⽂件 /etc/f 中,如下:
# cat /etc/f
include f.d/*.conf
子孙后代>七夕 诗句# echo "/usr/local/lib" >> /etc/f
# ldconfig
瓷砖品牌排名
或者在 /etc/f.d/ ⽬录下新建任何以 .conf 为后缀的⽂件,在该⽂件中加⼊库⽂件所在的⽬录。然后执⾏ ldconfig 更新/etc/ld.so.cache ⽂件。
如果共享库⽂件安装到了其他⾮ /lib 或 /usr/lib ⽬录下,但是⼜不想在 /etc/f ⽂件中加共享库路径(或者是没有权限加路径)。那可以 export ⼀个全局变量LD_LIBRARY_PATH,然后运⾏程序的时候就会去个⽬录中共享库。
LD_LIBRARY_PATH的意思是告诉loader在哪些⽬录中可以到共享库. 可以设置多个搜索⽬录, 这些⽬录之间⽤冒号分隔开.⽐如安装了⼀个mysql到/usr/local/mysql⽬录下, 其中有⼀⼤堆库⽂件在/usr/local/mysql/lib下⾯, 则可以在.bashrc
或.bash_profile或shell⾥加⼊以下语句即可:
export LD_LIBRARY_PATH=/usr/local/mysql/lib:$LD_LIBRARY_PATH
⼀般来讲这只是⼀种临时的解决⽅案, 在没有权限或临时需要的时候使⽤.
如果程序需要的库⽂件⽐系统⽬前存在的库⽂件版本低,可以做⼀个链接。⽐如:
error while loading shared libraries: libncurses.so.4: cannot open shared
object file: No such file or directory
如懿传人物介绍ls /usr/lib/libncu*
全国乙卷语文/usr/lib/libncurses.a  /usr/lib/libncurses.so.5
/usr/lib/libncurses.so /usr/lib/libncurses.so.5.3
可见虽然没有libncurses.so.4,但有libncurses.so.5,是可以向下兼容的
建⼀个链接就好了
ln -s /usr/lib/libncurses.so.5.3 /usr/lib/libncurses.so.4
总结
以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,谢谢⼤家对的⽀持。如果你想了解更多相关内容请查看下⾯相关链接

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。