libclntsh.so.12.2 文件加載失敗解決辦法


報錯:

sqlalchemy.exc.DatabaseError: (cx_Oracle.DatabaseError) DPI-1047: Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory"

查看環境變量:root@omnisky:/home# cat /etc/profile

修改 /etc/ld.so.conf文件,加入/opt/instantclient,后執行ldconfig問題解決

......libcudnn.so.7 is not a symbolic link
找到文件去加一個軟鏈接 ln

知識擴展:

export LD_LIBRARY_PATH :

LD_LIBRARY_PATH是Linux環境變量名,該環境變量主要用於指定查找共享庫(動態鏈接庫)時除了默認路徑之外的其他路徑。

當執行函數動態鏈接.so時,如果從文件不在缺省目錄’/lib’and’/usr/lib’。那么就需要指定環境變量LD_LIBRARY_PATH。
假如現在需要在已有的環境變量上添加新的路徑名,在linux下可以采用export命令來設置這個值,在終端輸入: 
export LD_LIBRARY_PATH=/opt/au1200/bin:$LD_LIBRARY_PATH 
然后在輸入export就會顯示是否設置正確。

export方式在重啟后失效,想要永久添加可以vim /etc/bashrc,修改其中的LD_LIBRARY_PATH變量。 
例如:LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/au1200/bin。

/etc/ld.so.conf:

/etc/ld.so.conf 此文件記錄了編譯時使用的動態庫的路徑,也就是加載so庫的路徑。
默認情況下,編譯器只會使用/lib和/usr/lib這兩個目錄下的庫文件,而通常通過源碼包進行安裝時,如果不
指定--prefix會將庫安裝在/usr/local目錄下,而又沒有在文件/etc/ld.so.conf中添加/usr/local/lib這個目錄>。這樣雖然安裝了源碼包,但是使用時仍然找不到相關的.so庫,就會報錯。也就是說系統不知道安裝了源碼包。
對於此種情況有2種解決辦法:
(1) 在用源碼安裝時,用--prefix指定安裝路徑為/usr/lib。這樣的話也就不用配置PKG_CONFIG_PATH
(2) 直接將路徑/usr/local/lib路徑加入到文件/etc/ld.so.conf文件的中。在文件/etc/ld.so.conf中末尾直接添加:/usr/local/lib
ldconfig
再來看看ldconfig這個程序,位於/sbin下,它的作用是將文件/etc/ld.so.conf列出的路徑下的庫文件緩存到/etc/ld.so.cache以供使用,因此當安裝完一些庫文件,或者修改/etc/ld.so.conf增加了庫的新的搜索路徑,需要運>行一下ldconfig,使所有的庫文件都被緩存到文件/etc/ld.so.cache中,如果沒做,可能會找不到剛安裝的庫。


Linux 共享庫

Linux 系統上有兩類根本不同的 Linux 可執行程序。第一類是靜態鏈接的可執行程序。靜態可執行程序包含執行所需的所有函數 — 換句話說,它們是“完整的”。因為這一原因,靜態可執行程序不依賴任何外部庫就可以運行。

第二類是動態鏈接的可執行程序。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM