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