解决Linux可执行文件目录下明明存在*.so文件,但却提示找不到

 更新时间:2023年11月24日 11:08:46   作者:有梦想的伟仔  
这篇文章主要介绍了解决Linux可执行文件目录下明明存在*.so文件,但却提示找不到问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

加载机制的问题

在Linux上,动态库的加载机制和在Windows上完全不一样

其实应该叫做【共享库】才对,动态库是Windows的概念,Windows上为*.dll,Linux上为*.so。

  • dll:dynamic link library,即:动态链接库。
  • so:share object(library),即:共享库。

1、在Windows上

一个可执行程序会先在当前目录下找需要的动态库(*.dll)文件,如果当前目录下有,则加载。

如果当前目录没有,才会去系统的环境变量目录下去找,如果找到了,则加载,如果连环境变量中都找不到,将报错。

2、在Linux上

一个可执行程序会直接去 “环境变量目录下” 找共享库(*.so),如果找不到,则报错。

“环境变量目录下” 打了引号,因为这更像是一个专门用于【共享库】的环境变量,Linux的环境变量应该是PATH(可在终端输入这个查看:echo $PATH),PATH跟Windows上的环境变量又不一样,PATH描述的是Linux命令的一个路径,而Windows上的环境变量描述的是命令 + 库。

Linux的库的加载,由 /etc/ld.so.conf 和 /etc/ld.so.conf.d/*.conf 来进行加载的,不妨一个一个打开看看就一切都明白了。

3、解决问题

(其实如果2中打开看了 /etc/ld.so.conf 和 /etc/ld.so.conf.d/*.conf就已经懂了,无论看没看,想直接解决问题,请看一下操作)

①将.so文件路径的目录添加到/etc/ld.so.conf

sudo vim /etc/ld.so.conf

方法1:在文件末行,添加自己的库的路径。

方法2:将自己的库,复制到ld.so.conf文件中的其中一个路径下(如:/usr/lib 或 /usr/local/lib。推荐/usr/local/lib,能够避免受到Linux升级的影响)。

②让①中的修改生效

sudo /sbin/ldconfig

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Apache AB性能测试工具使用教程

    Apache AB性能测试工具使用教程

    这篇文章主要介绍了Apache AB性能测试工具使用教程,本文重点讲解测试结果中的一些参数,对参数的含义一一解释,需要的朋友可以参考下
    2014-10-10
  • 在Apache服务器上启用GZip压缩静态内容的方法

    在Apache服务器上启用GZip压缩静态内容的方法

    这篇文章主要介绍了在Apache服务器上启用GZip压缩静态内容的方法,通过配置.htaccess文件即可轻松实现,同时附带了一些GZip的常用命令,需要的朋友可以参考下
    2015-08-08
  • ubuntu 16.04 64位兼容32位程序三步曲

    ubuntu 16.04 64位兼容32位程序三步曲

    这篇文章主要介绍了ubuntu 16.04 64位兼容32位程序的三步,本文分步骤给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-06-06
  • 修改sshd默认端口的步骤

    修改sshd默认端口的步骤

    ssh的的默认端口是22,将它修改成别的值会更安全一些,修改步骤看下面介绍
    2014-01-01
  • Centos7 mysql数据库安装及配置实现教程

    Centos7 mysql数据库安装及配置实现教程

    这篇文章主要介绍了Centos7 mysql数据库安装及配置实现教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • apache服务器全局配置详解(全)

    apache服务器全局配置详解(全)

    apache服务器全局配置详解,介绍很多关于服务器相关的一些知识,用apache架设服务器的朋友可以收藏下
    2013-03-03
  • 解决atd服务报错Failed with result‘exit-code‘问题

    解决atd服务报错Failed with result‘exit-code‘问题

    在isoftserveros-v5.1-oe1-aarch64系统中,安装at软件包后,由于手动执行导致atd守护进程出错,通过查看后台Process行,手动kill原atd进程,使用systemctl重启atd服务后,问题得以解决,此经验可为类似情况提供参考
    2024-09-09
  • ubuntu+php环境下的Memcached 安装方法

    ubuntu+php环境下的Memcached 安装方法

    Memcached是一套分散式的高速缓存系统,当初是Danga Interactive为了LiveJournal所发展
    2011-11-11
  • CentOS 6.6安装配置LAMP服务器(Apache+PHP5+MySQL)

    CentOS 6.6安装配置LAMP服务器(Apache+PHP5+MySQL)

    这篇文章主要介绍了CentOS 6.6服务器下安装配置LAMP服务器的方法,考虑到apache处理php的性能可以选择apache,如果静态页面可以安装nginx
    2016-10-10
  • linux的最大打开文件数限制修改方法

    linux的最大打开文件数限制修改方法

    这篇文章主要给大家介绍了关于linux最大打开文件数限制修改的方法,文中将实现的方法一步步介绍的非常详细,对同样遇到这个需求的朋友们具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-10-10

最新评论