error while loading shared libraries: lib*.so.*

一般我們?cè)贚inux下執(zhí)行某些外部程序的時(shí)候可能會(huì)提示找不到函數(shù)庫的錯(cuò)誤, 比如:

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

原因:

1)操作系統(tǒng)里確實(shí)沒有包含該函數(shù)庫(lib.so.文件)或者函數(shù)庫版本不對(duì), 遇到這種情況那就去網(wǎng)上下載并安裝上即可.

2)已經(jīng)安裝了該函數(shù)庫, 但執(zhí)行需要調(diào)用該函數(shù)庫的程序的時(shí)候, 程序按照默認(rèn)函數(shù)庫路徑找不到該函數(shù)庫文件.

解決辦法:

  1. 如果函數(shù)庫文件安裝到了/lib或/usr/lib目錄下, 那么只需執(zhí)行一下ldconfig命令.
    ? ldconfig命令的用途, 默認(rèn)搜尋目錄(/lib和/usr/lib)以及動(dòng)態(tài)庫配置文件/etc/ld.so.conf內(nèi)所列的目錄下, 搜索出可共享的動(dòng)態(tài)鏈接庫(格式如lib.so), 進(jìn)而創(chuàng)建出動(dòng)態(tài)裝入程序(ld.so)所需的連接和緩存文件. 緩存文件默認(rèn)為/etc/ld.so.cache, 此文件保存已排好序的動(dòng)態(tài)鏈接庫名字列表.
  1. 如果函數(shù)庫文件安裝到了/usr/local/lib(一般開源的函數(shù)庫會(huì)安裝到此目錄下)或其它"非/lib或/usr/lib"目錄下, 那么在執(zhí)行ldconfig命令前, 還要把新函數(shù)庫目錄加入到函數(shù)庫配置文件/etc/ld.so.conf中, 如下:
cat /etc/ld.so.conf
#include ld.so.conf.d/*.conf

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

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

ldconfig -v | grep mysql

3)若沒有權(quán)限修改/etc/ld.so.conf. 那可以export一個(gè)全局變量LD_LIBRARY_PATH, 多個(gè)目錄之間用冒號(hào)分隔開.

export LD_LIBRARY_PATH=/usr/local/mysql/lib:/usr/local/ssl/lib:$LD_LIBRARY_PATH 

一般來講這只是一種臨時(shí)的解決方案, 在沒有權(quán)限或臨時(shí)需要的時(shí)候使用.

4)如果程序需要的庫文件比系統(tǒng)目前存在的文件版本低,可以做一個(gè)鏈接,比如:

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

可見雖然沒有l(wèi)ibncurses.so.4,但有l(wèi)ibncurses.so.5是可以向下兼容的建一個(gè)鏈接就好了

ln -s  /usr/lib/libncurses.so.5.3  /usr/lib/libncurses.so.4

ldconfig命令參數(shù)說明:

1、 -v或--verbose:用此選項(xiàng)時(shí),ldconfig將顯示正在掃描的目錄及搜索到的動(dòng)態(tài)鏈接庫,還有它所創(chuàng)建的連接的名字.

2、-n :用此選項(xiàng)時(shí),ldconfig僅掃描命令行指定的目錄,不掃描默認(rèn)目錄(/lib,/usr/lib),也不掃描配置文件/etc/ld.so.conf所列的目錄.

3、-N :此選項(xiàng)指示ldconfig不重建緩存文件(/etc/ld.so.cache).若未用-X選項(xiàng),ldconfig照常更新文件的連接.

4、-X : 此選項(xiàng)指示ldconfig不更新文件的連接.若未用-N選項(xiàng),則緩存文件正常更新.

5、-f CONF : 此選項(xiàng)指定動(dòng)態(tài)鏈接庫的配置文件為CONF,系統(tǒng)默認(rèn)為/etc/ld.so.conf.

6、-C CACHE :此選項(xiàng)指定生成的緩存文件為CACHE,系統(tǒng)默認(rèn)的是/etc/ld.so.cache,此文件存放已排好序的可共享的動(dòng)態(tài)鏈接庫的列表.

7、-r ROOT :此選項(xiàng)改變應(yīng)用程序的根目錄為ROOT(是調(diào)用chroot函數(shù)實(shí)現(xiàn)的).選擇此項(xiàng)時(shí),系統(tǒng)默認(rèn)的配置文件/etc/ld.so.conf,實(shí)際對(duì)應(yīng)的為ROOT/etc/ld.so.conf.如用-r/usr/zzz時(shí),打開配置文件/etc/ld.so.conf時(shí),實(shí)際打開的是/usr/zzz/etc/ld.so.conf文件.用此選項(xiàng),可以大大增加動(dòng)態(tài)鏈接庫管理的靈活性.

8、-l :通常情況下,ldconfig搜索動(dòng)態(tài)鏈接庫時(shí)將自動(dòng)建立動(dòng)態(tài)鏈接庫的連接.選擇此項(xiàng)時(shí),將進(jìn)入專家模式,需要手工設(shè)置連接.一般用戶不用此項(xiàng).

9、-p或--print-cache :此選項(xiàng)指示ldconfig打印出當(dāng)前緩存文件所保存的所有函數(shù)庫的名字.

10、-c FORMAT 或--format=FORMAT :此選項(xiàng)用于指定緩存文件所使用的格式,共有三種:ld(老格式),new(新格式)和compat(兼容格式,此為默認(rèn)格式).

11、-V : 此選項(xiàng)打印出ldconfig的版本信息,而后退出.

12、- 或 --help 或--usage : 這三個(gè)選項(xiàng)作用相同,都是讓ldconfig打印出其幫助信息,而后退出.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容