博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
安装php 找不到lib.so包原因分析
阅读量:5937 次
发布时间:2019-06-19

本文共 1208 字,大约阅读时间需要 4 分钟。

一般我们在Linux下执行某些外部程序的时候可能会提示找不到共享库的错误, 比如:

tmux: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory


原因一般有两个, 一个是操作系统里确实没有包含该共享库(lib*.so.*文件)或者共享库版本不对, 遇到这种情况那就去网上下载并安装上即可. 


另外一个原因就是已经安装了该共享库, 但
执行需要调用该共享库的程序
的时候, 程序按照默认共享库路径找不到该共享库文件. 


所以安装共享库后要注意共享库路径设置问题, 如下:


1) 如果共享库文件安装到了/lib或/usr/lib目录下, 那么需执行一下ldconfig命令


ldconfig命令的用途, 主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下, 搜索出可共享的动态链接库(格式如lib*.so*), 进而创建出动态装入程序(ld.so)所需的连接和缓存文件. 缓存文件默认为/etc/ld.so.cache, 此文件保存已排好序的动态链接库名字列表. 


2) 如果共享库文件安装到了/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

-----解决----

3) 如果共享库文件安装到了其它"非/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    


一般来讲这只是一种临时的解决方案, 在没有权限或临时需要的时候使用.


--End--

转载地址:http://ocntx.baihongyu.com/

你可能感兴趣的文章
ubuntu三行命令安装chrome浏览器
查看>>
WebClient UI和Tomcat的启动器
查看>>
采用LAMP网站架构(Linux+Apache+MySQL+PHP)
查看>>
guava eventbus源码解析
查看>>
Spring Boot 多环境部署
查看>>
目前常用的自然语言处理开源项目/开发包汇总
查看>>
为什么说比特币的交易属性优于储值属性
查看>>
vim介绍与使用 ( 资料 )
查看>>
【2018.06.19学习笔记】【linux高级知识 13.1-13.3】
查看>>
发光的二次元——克拉克拉上云实践
查看>>
阿里在使用一种更灵活的软件集成发布模式
查看>>
Java解析excel工具easyexcel助你快速简单避免OOM[图]
查看>>
《赋能》的读后感作文2800字
查看>>
Java并发编程学习三:线程同步的关键字以及理解
查看>>
Kafka的基本设计
查看>>
java B2B2C 仿淘宝电子商城系统-高可用的分布式配置中心
查看>>
JavaWeb学习笔记之EL表达式
查看>>
Qt5开发及实例学习之停靠窗口QDockWidget类
查看>>
幽灵交易者策略(附源代码)
查看>>
yum更换国内源、用yum下载rpm包和源码包的安装
查看>>