国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【超詳細(xì)教程】解決libxxx.so: cannot open shared object file: No file or directory

這篇具有很好參考價(jià)值的文章主要介紹了【超詳細(xì)教程】解決libxxx.so: cannot open shared object file: No file or directory。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、參考資料

error while loading shared libraries的解決方案

libascend_hal.so: cannot open shared object file:No such…解決辦法-云社區(qū)-華為云 (huaweicloud.com)

二、相關(guān)介紹

1. -lxxx.so命名

`lxxx` means `lib + lib-name + .so`

lc means libc.so, 
lltdl means libltdl.so, 
lXtst means libXts.so

2. 查找 .so 文件

ld -lxxx --verbose

gcc -lxxx --verbose

locate libhdf5.so
/usr/bin/ld: cannot find -lhdf5

# 這表示找不到庫(kù)文件 libhdf5.so
# 若是其它庫(kù)文件,則是 cannot find -lxxx ,其中 xxx 是庫(kù)文件的名字。

解釋說明

  • -lxxx 表示 lib + lib-name + .so。例如,-lhdf5 表示 libhdf5.so

3. 靜態(tài)庫(kù)與動(dòng)態(tài)庫(kù)

靜態(tài)庫(kù) GCC 進(jìn)行鏈接時(shí),會(huì)把靜態(tài)庫(kù)中代碼打包(復(fù)制)到可執(zhí)行程序中,程序運(yùn)行時(shí),可執(zhí)行文件里就包含了所有的代碼,直接運(yùn)行。

動(dòng)態(tài)庫(kù) GCC 進(jìn)行鏈接時(shí),動(dòng)態(tài)庫(kù)的代碼不會(huì)被打包到可執(zhí)行程序中,只是打包一些有關(guān)于動(dòng)態(tài)庫(kù)的信息,在運(yùn)行時(shí)才找到動(dòng)態(tài)庫(kù)文件位置,加載代碼后才運(yùn)行。

4. ldd指令

通過 ldd (list dynamic dependencies) 指令,檢查動(dòng)態(tài)庫(kù)依賴關(guān)系。

【超詳細(xì)教程】解決libxxx.so: cannot open shared object file: No file or directory

5. 搜索動(dòng)態(tài)庫(kù)路徑

當(dāng)系統(tǒng)加載可執(zhí)行代碼時(shí)候,能夠知道其所依賴庫(kù)的名字,但是還需要知道絕對(duì)路徑。此時(shí)就需要系統(tǒng)的動(dòng)態(tài)載入器來獲取該絕對(duì)路徑。

對(duì)于ELF 格式的可執(zhí)行程序,是由 ld-linux.so 來完成的,找到庫(kù)文件后將其載入內(nèi)存。它先后搜索的順序是:

  1. elf文件的 DT_RPATH 段;
  2. 環(huán)境變量 LD_LIBRARY_PATH;
  3. /etc/ld.so.cache文件列表;
  4. /lib/usr/lib/usr/local/lib 目錄。

6. ld.so.conf配置文件

ld.so.conf配置的作用是,將 /etc/ld.so.conf 列出的庫(kù)文件路徑緩存到 /etc/ld.so.cache以供使用。當(dāng)安裝完一些庫(kù)文件,或者在 /etc/ld.so.conf 配置文件中增加新的庫(kù)文件搜索路徑,運(yùn)行一下ldconfig,使所有的庫(kù)文件都被緩存到文件 /etc/ld.so.cache 中。如果沒有做以上操作,可能會(huì)找不到剛安裝的庫(kù)。

可以通過以下指令,更新ld.so.conf配置文件:

# 打開配置文件
sudo vi /etc/ld.so.conf

# 新增一行
/usr/local/lib

# 使配置生效
sudo ldconfig

# 查看配置
/sbin/ldconfig -v

三、問題描述

1. 情況一

/usr/bin/ld: cannot find -lxxx 的解決辦法

make編譯時(shí),找不到 lxxx.so 動(dòng)態(tài)庫(kù),導(dǎo)致報(bào)錯(cuò)。

/usr/bin/ld: cannot find -lc
/usr/bin/ld: cannot find -lltdl
/usr/bin/ld: cannot find -lXtst

2. 情況二

run運(yùn)行可執(zhí)行文件,找不到 .so 動(dòng)態(tài)庫(kù),導(dǎo)致報(bào)錯(cuò)。

error while loading shared libraries: libXXXXXXX.so.1: cannot open shared object file: No such file or directory

libcal.so: cannot open shared object file: No file or directory

【超詳細(xì)教程】解決libxxx.so: cannot open shared object file: No file or directory

四、問題分析

1. 情況一

1.1 分析原因

默認(rèn)情況下,編譯器只會(huì)使用 /lib/usr/lib 這兩個(gè)目錄下的庫(kù)文件,通常通過源碼包進(jìn)行安裝時(shí),如果不指定 –prefix,會(huì)將庫(kù)安裝在 /usr/local/lib 目錄下;當(dāng)運(yùn)行程序需要鏈接動(dòng)態(tài)庫(kù)時(shí),提示找不到相關(guān)的 .so 庫(kù),會(huì)報(bào)錯(cuò)。也就是說,/usr/local/lib目錄不在系統(tǒng)默認(rèn)的庫(kù)搜索目錄中,需要將目錄加進(jìn)去。

1.2 解決辦法

可以設(shè)定 LD_LIBRARY_PATH 環(huán)境變量,程序運(yùn)行時(shí)會(huì)在此環(huán)境變量指定的文件夾下尋找動(dòng)態(tài)鏈接庫(kù)。

1.2.1 修改環(huán)境變量(永久有效)

其實(shí),對(duì)于由普通用戶自己編譯生成的.so庫(kù)文件,比較好的做法是將這些.so庫(kù)文件的路徑用export指令加入到~/.bashrc中的LD_LIBRARY_PATH變量中,LD_LIBRARY_PATH是程序運(yùn)行需要鏈接.so庫(kù)時(shí)會(huì)去查找的一個(gè)目錄,~/.bashrc是登陸或打開shell時(shí)會(huì)讀取的文件,這樣,每次用戶登錄時(shí),都會(huì)把這些.so庫(kù)文件的路徑寫入LD_LIBRARY_PATH,這樣就可以正常地使用這些.so庫(kù)文件了。

普通用戶可直接修改~/.bashrc~/.bash_profile,該修改僅對(duì)當(dāng)前用戶有效。
root用戶可修改/etc/profile,且對(duì)所有用戶都有效。

以修改 ~/.bashrc 配置文件為例:

# 打開配置文件
vim ~/.bashrc

# 添加配置
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/hua/Myproject/1_basic/lib

# 若修改環(huán)境變量 LD_LIBRARY_PATH 不奏效,則修改變量 LIBRARY_PATH
export LIBRARY_PATH=$LIBRARY_PATH:/home/hua/Myproject/1_basic/lib

# 更新配置
source ~/.bashrc
1.2.2 修改環(huán)境變量(臨時(shí))

在終端使用export命令來配置環(huán)境變量,但僅限于當(dāng)前終端;對(duì)于其他終端窗口則需要重新使用export命令才起作用。
export配置環(huán)境變量的格式為:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/hua/Myproject/1_basic/lib
1.2.3 運(yùn)行成功

再次檢查動(dòng)態(tài)庫(kù)依賴關(guān)系。

【超詳細(xì)教程】解決libxxx.so: cannot open shared object file: No file or directory
【超詳細(xì)教程】解決libxxx.so: cannot open shared object file: No file or directory

2. 情況二

2.1 分析原因

如果更新 ld.so.conf 配置文件,還是出現(xiàn)以上錯(cuò)誤,那可能的原因是:當(dāng)前用戶沒有讀取庫(kù)目錄的權(quán)限。從其他主機(jī)上拷貝一些.so動(dòng)態(tài)庫(kù),然后用root權(quán)限放到了/usr/local/lib 目錄中(普通用戶沒有該目錄的寫權(quán)限),然后切換用戶運(yùn)行程序時(shí),始終提示找不到.so庫(kù)。用root權(quán)限增加到 /usr/local/lib 目錄中的.so文件,對(duì)于普通用戶而言,是沒有訪問權(quán)限的。所以,以普通用戶運(yùn)行程序,當(dāng)需要鏈接.so庫(kù)時(shí),在/usr/local/lib中是查找不到的。

2.2 解決辦法

修改.so文件的權(quán)限。

sudo chown yoyo:yoyo /usr/local/lib/libhdf5.so

3. 情況三

能找到 .so 文件。

3.1 查找 .so 文件

locate libiconv.so
$ locate libiconv.so
/home/user/anaconda3/lib/libiconv.so   # <-- right here
/home/user/anaconda3/lib/libiconv.so.2
/home/user/anaconda3/lib/libiconv.so.2.5.1
/home/user/anaconda3/lib/preloadable_libiconv.so
/home/user/anaconda3/pkgs/libiconv-1.14-0/lib/libiconv.so
/home/user/anaconda3/pkgs/libiconv-1.14-0/lib/libiconv.so.2
/home/user/anaconda3/pkgs/libiconv-1.14-0/lib/libiconv.so.2.5.1

3.2 創(chuàng)建軟連接

Link it to the right place, usually it is /lib64 or /usr/lib64。

$ sudo ln -s /home/user/anaconda3/lib/libiconv.so /usr/lib64/

4. 情況四

能找到 .so 文件,但不符合命名規(guī)則,創(chuàng)建軟鏈接即可。例如:libasound.so.2。

ln -s libasound.so.2 libasound.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.65.1 /usr/lib/libboost_filesystem.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 /usr/lib/libboost_system.so

5. 情況五

需要用戶編譯生成的 .so 文件。

When you compile your program you must supply the path to the library; in g++ use the -L option:

編譯c/c++程序,需要添加 -L 選項(xiàng),才能生成 lib 鏈接庫(kù)。

# c程序
g++ -L/path/foo/bar myprogram.cc -lxxx -o myprogram
# c++程序
g++ -L/home/user/myDir myprogram.cpp -lxxx -lxxx -o myprogram

6. 情況六

如果找不到 .so 文件,則下載安裝。文章來源地址http://www.zghlxwxcb.cn/news/detail-460680.html

  • google下載;
  • 百度下載;

6.1 示例一

sudo apt-get install libfoo-dev
# 如果apt-get安裝失敗,先添加apt源再安裝
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev

6.2 示例二

unable to locate libjasper-dev
# 解決辦法
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main" 
sudo apt update 
sudo apt install libjasper1 libjasper-dev

到了這里,關(guān)于【超詳細(xì)教程】解決libxxx.so: cannot open shared object file: No file or directory的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • “l(fā)ibGL.so.1: cannot open shared object file: No such file or directory“問題解決

    在使用Docker進(jìn)行深度學(xué)習(xí)環(huán)境搭建時(shí),安裝opencv-python后出現(xiàn)此類報(bào)錯(cuò),故尋找解決方法。 嘗試安裝opencv-python-headless,而不是opencv-python,適用于 Docker 等無界面系統(tǒng)。 opencv-python:這個(gè)存儲(chǔ)庫(kù)只包含OpenCV庫(kù)的主要模塊。 opencv-contrib-python : opencv-contrib-python 庫(kù)包含主要模塊與

    2024年02月14日
    瀏覽(26)
  • 【解決方法】libGL.so.1: cannot open shared object file: No such file or directory

    在配云端GPU服務(wù)器時(shí),出現(xiàn)這個(gè)錯(cuò)誤 解決方法 安裝這個(gè)庫(kù)即可 親測(cè)有效 在Stack Overflow上有其他回答,當(dāng)我試了無效 這邊也提供給大家 1、在docker中出錯(cuò) 將以下行添加到您的 Dockerfile: 這些命令安裝通常存在于本地計(jì)算機(jī)上的 cv2 依賴項(xiàng),但可能會(huì)在您的 Docker 容器中丟失,

    2024年01月17日
    瀏覽(18)
  • 報(bào)錯(cuò)解決:libcudart.so.10.2: cannot open shared object file: No such file or directory

    原因:所用cuda版本為11.5,在/usr/local/cuda-11.5/lib64目錄中確實(shí)沒有l(wèi)ibcudart.so.10.2這個(gè)文件 解決方法:在官網(wǎng)https://developer.nvidia.com/cuda-10.2-download-archive?target_os=Linuxtarget_arch=x86_64target_distro=Ubuntutarget_version=1804target_type=runfilelocal按 Base Installer 安裝cuda10.2,參考https://www.nhooo.com/note/

    2024年02月02日
    瀏覽(24)
  • 解決:ImportError: libcudart.so.10.2: cannot open shared object file: No such file or directory.

    解決:ImportError: libcudart.so.10.2: cannot open shared object file: No such file or directory.

    ImportError: libcudart.so.10.2: cannot open shared object file: No such file or directory 看官網(wǎng) https://pytorch-geometric.readthedocs.io/en/latest/notes/installation.html Installation via Anaconda? Update: You can now install PyG via Anaconda for all major OS/PyTorch/CUDA combinations ?? Given that you have PyTorch = 1.8.0 installed, simply run conda

    2024年02月11日
    瀏覽(19)
  • ubantu libssl.so.1.1: cannot open shared object file

    libssl.so.1.1: cannot open shared object file 使用 Ubuntu 22.04 時(shí),有時(shí)候會(huì)遇到如下錯(cuò)誤 error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory 這是因?yàn)閁buntu 22.04 默認(rèn)使用的是 openssl3.0 ,但是大多為 Ubuntu 生成的可執(zhí)行文件依賴 openssl 1.1 安裝Openssl 1.1 我們

    2024年02月04日
    瀏覽(20)
  • ImportError: libXrender.so.1: cannot open shared object file: No such file or directory(無sudo權(quán)限解決問題)

    ImportError: libXrender.so.1: cannot open shared object file: No such file or directory(無sudo權(quán)限解決問題)

    目錄 一、問題描述 二、問題分析 三、問題解決 1、嘗試用sudo管理員方式解決 2、沒有管理員(sudo)權(quán)限,終端輸入 小結(jié): 安裝好opencv-python之后,在服務(wù)器上運(yùn)行代碼報(bào)錯(cuò),如下: opencv依賴包不全,python缺少共享庫(kù) 1、嘗試用sudo管理員方式解決 在當(dāng)前用戶有 sudo權(quán)限 情況

    2024年02月13日
    瀏覽(25)
  • libtorch_cuda_cu.so: cannot open shared object file

    libtorch_cuda_cu.so: cannot open shared object file

    運(yùn)行時(shí)報(bào)錯(cuò): (1)環(huán)境中l(wèi)ibtorch_cuda_cu.so文件: 不存在 red {不存在} 不存在 mmcv的版本和torch版本不一致 [mmcv官網(wǎng): PyTorch 和 CUDA 版本要求] [mmcv官網(wǎng): 其他版本PyTorch ] 找對(duì)應(yīng)版本torch 并重裝

    2024年02月12日
    瀏覽(14)
  • Linux安裝Mysql報(bào)錯(cuò):libtinfo.so.5: cannot open shared object file

    Linux安裝Mysql報(bào)錯(cuò):libtinfo.so.5: cannot open shared object file

    ????????我在Linux上安裝Mysql 8.0,準(zhǔn)備啟動(dòng)的時(shí)候遇到了如標(biāo)題所示的錯(cuò)誤: mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory ????????大致意思是系統(tǒng)找不到 libtinfo.so.5,也就是缺少這個(gè)依賴而無法啟動(dòng)。 ? ? ? ? 首先嘗試用

    2023年04月14日
    瀏覽(25)
  • ImportError: libGL.so.1: cannot open shared object file: No such file or dir...解決Python import cv2報(bào)錯(cuò)

    在不聯(lián)網(wǎng)的服務(wù)器上的Docker容器內(nèi)運(yùn)行Python程序,Python版本是3.8版本。安裝的opencv-python是這一版: opencv_python-4.7.0.68-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 程序部分 import cv2 出現(xiàn)報(bào)錯(cuò):ImportError: libGL.so.1: cannot open shared object file: No such file or directory 具體如下: 出現(xiàn)這種情

    2024年02月13日
    瀏覽(30)
  • mysql啟動(dòng)時(shí)報(bào)錯(cuò):error while loading shared libraries: libncurses.so.5: cannot open shared object file

    今天由于項(xiàng)目的需要,特地在redhat9中安裝了一套mysql5.7的數(shù)據(jù)庫(kù)。前期在安裝和配置的過程中沒有什么問題,但是在啟動(dòng)mysql的時(shí)候報(bào)了一個(gè)錯(cuò),報(bào)錯(cuò)內(nèi)容為: 根據(jù)報(bào)錯(cuò)內(nèi)容可以看出,是因?yàn)樵趩?dòng)mysql的時(shí)候加載了libtinfo.so.5庫(kù)文件。此時(shí)我們可以查看redhat9系統(tǒng)中是否存在改

    2024年02月12日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包