今天扣丁学堂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/ld.so.conf文件中添加路径,vi/etc/ld.so.conf

添加下边内容

include ld.so.conf.d/*.conf

/usr/cluster/.share/lib

方法二、在终端输入:exportLD_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/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表.

如果共享库文件安装到了/usr/local/lib(一般开源的共享库都会安装到该目录下)或者其它非/lib或/usr/lib目录下,那么在执行ldconfig命令前,还要把新的共享库目录加入到共享库配置文件/etc/ld.so.conf中,如下:

# cat /etc/ld.so.conf

include ld.so.conf.d/*.conf

# echo "/usr/local/lib" >> /etc/ld.so.conf

# ldconfig

或者在/etc/ld.so.conf.d/目录下新建任何以.conf为后缀的文件,在该文件中加入库文件所在的目录。然后执行ldconfig更新/etc/ld.so.cache文件。

如果共享库文件安装到了其他非/lib或/usr/lib目录下,但是又不想在/etc/ld.so.conf文件中加共享库路径(或者是没有权限加路径)。那可以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

以上关于扣丁学堂Linux培训详解程序运行时加载动态库失败解决方法的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,想要学好Linux开发小编给大家推荐口碑良好的扣丁学堂,扣丁学堂有专业老师制定的Linux学习路线图辅助学员学习,此外还有与时俱进的Linux视频教程供大家学习,想要学好Linux开发技术的小伙伴快快行动吧。

linux直接运行程序加载动态库失败,扣丁学堂Linux培训详解程序运行时加载动态库失败解决方法...相关推荐

  1. linux shell 获取当月第一天与最后一天,扣丁学堂Linux培训简述在shell脚本中获取上个月最后一天的日期方法...

    本篇文章扣丁学堂Linux培训小编给读者们分享一下在shell脚本中获取上个月最后一天的日期方法,对Linux开发感兴趣的小伙伴就随小编来了解一下吧,希望对小伙伴们有所帮助. Linux中用date命 ...

  2. linux zsh ping命令,扣丁学堂Linux培训简述Linux使用zsh提高效率的5条建议

    本篇文章扣丁学堂Linux培训小编给大家分享一下Linux使用zsh提高效率的5条建议,对Linux开发技术感兴趣或者还是想要加入到Linux开发领域的小伙伴可以随小编一起来了解一下哦. Linux培 ...

  3. python的excell库_扣丁学堂Python基础教程之Excel处理库openpyxl详解

    扣丁学堂Python基础教程之Excel处理库openpyxl详解 2018-05-04 09:49:49 3197浏览 openpyxl是一个第三方库,可以处理xlsx格式的Excel文件.pipi ...

  4. linux禁止普通用户切换,扣丁学堂Linux培训简述Linux禁止普通用户切换至root用户的实例...

    本篇文章扣丁学堂Linux培训小编给读者们分享一下Linux禁止普通用户切换至root用户的实例,对Linux开发技术感兴趣的小伙伴就随小编来了解一下吧,希望对小伙伴们有所帮助. 在上正文之前,我想先 ...

  5. linux启动sql server数据库,SQL Server数据库启动过程详解及启动不起来的问题分析及解决方法...

    第五步.启动系统数据库model model系统数据库同样也是SQL Server启动过程中用到的一个非常关键的数据库,如果这个库损坏,SQL Server启动也会失败,关于model数据不能启动的原 ...

  6. python程序调用写好的代码_扣丁学堂浅谈Python编程中NotImplementedError的使用方法...

    扣丁学堂浅谈Python编程中NotImplementedError的使用方法 2018-07-04 14:08:02 2559浏览 本篇文章扣丁学堂 Python编程中raise可以实现报出错误的功 ...

  7. win7下计划任务schtasks使用详解及错误:无法加载列资源的解决方法1

    win7下计划任务schtasks使用详解及"错误:无法加载列资源"的解决方法1 2011-12-10 20:33 schtasks 命令简述: 安排命令和程序,使其定期运行或在指 ...

  8. cglib动态代理jar包_代理模式详解:静态代理+JDK/CGLIB 动态代理实战

    1. 代理模式 代理模式是一种比较好的理解的设计模式.简单来说就是 我们使用代理对象来代替对真实对象(real object)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标 ...

  9. java常量配置_java项目动态配置常量和peiconfig.properties配置使用详解

    java项目动态配置常量和peiconfig.properties配置使用详解 点击:2 Java工程中配置信息一般都写在 properties文件中,下面这篇文章是对java基础配置的一点学习心得整 ...

最新文章

  1. R语言ggplot2可视化配置多个子图中的相同分组使用相同的填充色实战
  2. 盘点2015跨境电商:硝烟下的机遇与变革
  3. ArcGIS Engine中的8种数据访问【转】
  4. 海外投行抢滩大数据 人工智能等领域趋热
  5. android EventBus的简单使用
  6. PyQt5入门——手把手教你配置环境,快速上手GUI程序开发(Anaconda+PyCharm+Qt Designer+pyuic)
  7. apache php 调优_LAMP服务器性能优化技巧之加速PHP
  8. Python实现删除字符串中的字符
  9. 使用Nexus3搭建Maven私服+上传第三方jar包到本地maven仓库
  10. [svn] 在线安装
  11. 昆仑mcgs 通讯控制台达B2伺服采用modbus rtu方式,昆仑屏直接控制台达b2伺服的正反转,停止及速度设定,简单好上手
  12. 在线制作ico图标源码
  13. 开发技术指南 | 最全 Substrate 与 Polkadot 技术文档、教程、课程
  14. 车内贵重物品检测方案总结
  15. [渝粤教育] 西南科技大学 财务管理与分析 在线考试复习资料(2)
  16. 大学常用计算机软件推荐+安装教程
  17. 关于我所上传资源的相关问题
  18. 【Windows C++】调用powershell上传指定目录下所有文件
  19. PostgreSQL数据库触发器实验
  20. 自动驾驶汽车中的激光雷达和摄像头传感器融合

热门文章

  1. js中拆分类似于“aaa-bbb-ccc”字符
  2. The difference between 'except Exception, e: ' and 'except Exception as e:'
  3. hp台式计算机开机密码清除,惠普hp电脑开机密码忘记了怎么处理
  4. java中DAO层、Service层、Controller层的区别
  5. 使用 jsoup 对 HTML 文档进行解析和操作
  6. raptor找素数_raptor取50到100素数
  7. 计算机一级b考试试题及答案,全国计算机等级考试一级B模拟试题及答案(一)
  8. 华为200万年薪应届博士大起底!8位天才少年学校专业详解
  9. 【重温基础算法】内部排序之快速排序法
  10. 手动编写快排(快速排序),实现从小到大和从大到小排序