1. 程式人生 > >Linux-命令基礎

Linux-命令基礎

庫是別人寫好的、可以複用的、提高程式設計效率、減少程式碼量的程式碼。 分為靜態庫和動態庫(共享庫)兩種。 靜態庫的程式碼在編譯過程中已經被載入可執行程式,因此可執行程式的體積大。 動態庫的程式碼是在可執行程式執行的時候才載入的,在編譯過程中近簡單的引用,因此可執行程式的體積小。

定位庫是按照先後搜尋 elf檔案的 DT_RPATH段 —> 環境變數LD_LIBRARY_PATH —> /etc/ld.so.cache檔案列表 —> /lib/和/usr/lib目錄 ,找到庫檔案後將其載入記憶體。

使用ldd <檔案所在絕對路徑>確定一個可執行檔案依賴的庫檔案

解決載入庫失敗的問題

原因有二:

  1. 要麼是根本沒有安裝該庫;
  2. 要麼是已經安裝了,但是程式找不到該庫。 根據原因解決問題。

首先確定是否安裝了該庫:使用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