Linux-命令基礎
阿新 • • 發佈:2018-12-13
庫
庫是別人寫好的、可以複用的、提高程式設計效率、減少程式碼量的程式碼。 分為靜態庫和動態庫(共享庫)兩種。 靜態庫的程式碼在編譯過程中已經被載入可執行程式,因此可執行程式的體積大。 動態庫的程式碼是在可執行程式執行的時候才載入的,在編譯過程中近簡單的引用,因此可執行程式的體積小。
定位庫是按照先後搜尋 elf檔案的 DT_RPATH段 —> 環境變數LD_LIBRARY_PATH —> /etc/ld.so.cache檔案列表 —> /lib/和/usr/lib目錄 ,找到庫檔案後將其載入記憶體。
使用ldd
<檔案所在絕對路徑>確定一個可執行檔案依賴的庫檔案
解決載入庫失敗的問題
原因有二:
- 要麼是根本沒有安裝該庫;
- 要麼是已經安裝了,但是程式找不到該庫。 根據原因解決問題。
首先確定是否安裝了該庫:使用locate
quadmath.so
- 如果沒有返回包含該庫的路徑,則是原因1,需要安裝該庫。
- 如果返回了路徑,則是原因2,如果庫所在的目錄為/lib或/usr/lib,則不需要任何操作,如果不在,則可通過如下任一種方法: 1. 將該庫所在的絕對路徑新增到/etc/ld.so.cache檔案中,並執行ldconfig。 2. 使用
export
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:<該庫所在的絕對路徑>將路徑新增到環境變數中,可以直接在命令列中輸入,也可新增到.bashrc檔案中,在執行source ./bashrc