解決Linux可執(zhí)行文件目錄下明明存在*.so文件,但卻提示找不到
加載機(jī)制的問(wèn)題
在Linux上,動(dòng)態(tài)庫(kù)的加載機(jī)制和在Windows上完全不一樣
其實(shí)應(yīng)該叫做【共享庫(kù)】才對(duì),動(dòng)態(tài)庫(kù)是Windows的概念,Windows上為*.dll,Linux上為*.so。
- dll:dynamic link library,即:動(dòng)態(tài)鏈接庫(kù)。
- so:share object(library),即:共享庫(kù)。
1、在Windows上
一個(gè)可執(zhí)行程序會(huì)先在當(dāng)前目錄下找需要的動(dòng)態(tài)庫(kù)(*.dll)文件,如果當(dāng)前目錄下有,則加載。
如果當(dāng)前目錄沒(méi)有,才會(huì)去系統(tǒng)的環(huán)境變量目錄下去找,如果找到了,則加載,如果連環(huán)境變量中都找不到,將報(bào)錯(cuò)。
2、在Linux上
一個(gè)可執(zhí)行程序會(huì)直接去 “環(huán)境變量目錄下” 找共享庫(kù)(*.so),如果找不到,則報(bào)錯(cuò)。
“環(huán)境變量目錄下” 打了引號(hào),因?yàn)檫@更像是一個(gè)專門(mén)用于【共享庫(kù)】的環(huán)境變量,Linux的環(huán)境變量應(yīng)該是PATH(可在終端輸入這個(gè)查看:echo $PATH),PATH跟Windows上的環(huán)境變量又不一樣,PATH描述的是Linux命令的一個(gè)路徑,而Windows上的環(huán)境變量描述的是命令 + 庫(kù)。
Linux的庫(kù)的加載,由 /etc/ld.so.conf 和 /etc/ld.so.conf.d/*.conf 來(lái)進(jìn)行加載的,不妨一個(gè)一個(gè)打開(kāi)看看就一切都明白了。
3、解決問(wèn)題
(其實(shí)如果2中打開(kāi)看了 /etc/ld.so.conf 和 /etc/ld.so.conf.d/*.conf就已經(jīng)懂了,無(wú)論看沒(méi)看,想直接解決問(wèn)題,請(qǐng)看一下操作)
①將.so文件路徑的目錄添加到/etc/ld.so.conf
sudo vim /etc/ld.so.conf
方法1:在文件末行,添加自己的庫(kù)的路徑。
方法2:將自己的庫(kù),復(fù)制到ld.so.conf文件中的其中一個(gè)路徑下(如:/usr/lib 或 /usr/local/lib。推薦/usr/local/lib,能夠避免受到Linux升級(jí)的影響)。
②讓①中的修改生效
sudo /sbin/ldconfig
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
在Apache服務(wù)器上啟用GZip壓縮靜態(tài)內(nèi)容的方法
這篇文章主要介紹了在Apache服務(wù)器上啟用GZip壓縮靜態(tài)內(nèi)容的方法,通過(guò)配置.htaccess文件即可輕松實(shí)現(xiàn),同時(shí)附帶了一些GZip的常用命令,需要的朋友可以參考下2015-08-08
Centos7 mysql數(shù)據(jù)庫(kù)安裝及配置實(shí)現(xiàn)教程
這篇文章主要介紹了Centos7 mysql數(shù)據(jù)庫(kù)安裝及配置實(shí)現(xiàn)教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
解決atd服務(wù)報(bào)錯(cuò)Failed with result‘exit-code‘問(wèn)題
在isoftserveros-v5.1-oe1-aarch64系統(tǒng)中,安裝at軟件包后,由于手動(dòng)執(zhí)行導(dǎo)致atd守護(hù)進(jìn)程出錯(cuò),通過(guò)查看后臺(tái)Process行,手動(dòng)kill原atd進(jìn)程,使用systemctl重啟atd服務(wù)后,問(wèn)題得以解決,此經(jīng)驗(yàn)可為類似情況提供參考2024-09-09
ubuntu+php環(huán)境下的Memcached 安裝方法
Memcached是一套分散式的高速緩存系統(tǒng),當(dāng)初是Danga Interactive為了LiveJournal所發(fā)展2011-11-11
CentOS 6.6安裝配置LAMP服務(wù)器(Apache+PHP5+MySQL)
這篇文章主要介紹了CentOS 6.6服務(wù)器下安裝配置LAMP服務(wù)器的方法,考慮到apache處理php的性能可以選擇apache,如果靜態(tài)頁(yè)面可以安裝nginx2016-10-10

