1. 程式人生 > >linux 中新增自己的庫路徑的方法

linux 中新增自己的庫路徑的方法

庫文件在連線(靜態庫和共享庫)和執行(僅限於使用共享庫的程式)時被使用,其搜尋路徑是在系統中進行配置的。一般 Linux 系統把 /lib 和 /usr/lib 兩個目錄作為預設的庫搜尋路徑,所以使用這兩個目錄中的庫時無需進行配置搜尋路徑即可直接使用。對於處於預設庫搜尋路徑之外的庫,需要將庫的位置新增到庫的搜尋路徑之中。配置庫文件的搜尋路徑有下列兩種方式,可任選其一使用:

    在環境變數 LD_LIBRARY_PATH 中指明庫的搜尋路徑。

    在 /etc/ld.so.conf 文件中新增庫的搜尋路徑。

    將自己可能存放庫文件的路徑都加入到/etc/ld.so.conf中是明智的選擇

    新增方法也極其簡單,將庫文件的絕對路徑直接寫進去就OK了,一行一個。例如:

    /usr/X11R6/lib

    /usr/local/lib

    /opt/lib

    需要注意的是:第二種搜尋路徑的配置方式對於程式連線時的庫(包括共享庫和靜態庫)的定位已足夠了,但是對於使用了共享庫的程式的執行還是不夠的。這是因為為了加快程式執行時對共享庫的定位速度,避免使用搜索路徑查詢共享庫的低效率,所以是直接讀取庫列表文件 /etc/ld.so.cache 從中進行搜尋的。/etc/ld.so.cache 是個非文字的資料文件,不能直接編輯,他是根據 /etc/ld.so.conf 中配置的搜尋路徑由 /sbin/ldconfig 命令將這些搜尋路徑下的共享庫文件集中在一起而生成的(ldconfig 命令要以 root 許可權執行)。因此,為了確保程式執行時對庫的定位,在 /etc/ld.so.conf 中進行了庫搜尋路徑的配置之後,還必須要執行 /sbin/ldconfig 命令更新 /etc/ld.so.cache 文件之後才能夠。ldconfig ,簡單的說,他的作用就是將/etc/ld.so.conf列出的路徑下的庫文件快取到/etc/ld.so.cache 以供使用。因此當安裝完一些庫文件,(例如剛安裝好glib),或修改ld.so.conf增加新的庫路徑後,需要執行一下 /sbin/ldconfig使任何的庫文件都被快取到ld.so.cache中,假如沒做,即使庫文件明明就在/usr/lib下的,也是不會被使用的,結果編譯過程中抱錯,缺少xxx庫,去檢視發現明明就在那放著,搞的想大罵computer蠢豬一個。

    在程式連線時,對於庫文件(靜態庫和共享庫)的搜尋路徑,除了上面的配置方式之外,還能夠通過 -L 引數顯式指定。因為用 -L 配置的路徑將被優先搜尋,所以在連線的時候通常都會以這種方式直接指定要連線的庫的路徑。

    前面已說明過了,庫搜尋路徑的配置有兩種方式:在環境變數 LD_LIBRARY_PATH 中配置連同在 /etc/ld.so.conf 文件中配置。其中,第二種配置方式需要 root 許可權,以改變 /etc/ld.so.conf 文件並執行 /sbin/ldconfig 命令。而且,當系統重新啟動後,任何的基於 GTK2 的程式在執行時都將使用新安裝的 GTK+ 庫。不幸的是,由於 GTK+ 版本的改變,這有時會給應用程式帶來相容性的問題,造成某些程式執行不正常。為了避免出現上面的這些情況,在 GTK+ 及其依賴庫的安裝過程中對於庫的搜尋路徑的配置將採用第一種方式進行。這種配置方式無需 root 許可權,配置也簡單:

    $ export LD_LIBRARY_PATH=/opt/gtk/lib:$LD_LIBRARY_PATH

    能夠用下面的命令檢視 LD_LIBRAY_PATH 的配置內容:

    $ echo $LD_LIBRARY_PATH

    至此,庫的兩種配置就完成了。

相關推薦

linux 新增自己路徑方法

庫文件在連線(靜態庫和共享庫)和執行(僅限於使用共享庫的程式)時被使用,其搜尋路徑是在系統中進行配置的。一般 Linux 系統把 /lib 和 /usr/lib 兩個目錄作為預設的庫搜尋路徑,所以使用這兩個目錄中的庫時無需進行配置搜尋路徑即可直接使用。對於處於預設庫搜尋路

Eclipse新增使用者方法

背景: 有時要新增一些常用的jar或者dll檔案到Eclipse中。但是,明明添加了使用者庫,程式呼叫的時候仍然報錯。 錯誤如下: Exception in thread "main" java.lang.UnsatisfiedLinkError: no ICTCLAS

linux核心檔案新增自己的驅動,新增自己linux驅動,編譯自己linux驅動程式方法和例子圖文

此文章為done原創,轉載請寫明出處,尊重原創。 寫這個文章,我參考了網上的一些部落格: http://bbs.chinaunix.net/thread-3634524-1-1.html http://www.bkjia.com/gjrj/800182.html 也參考

JAVAEE——宜立方商城13:Mycat數據分片、主從復制、讀寫分離、100%Linux成功安裝Mysql的方法

server structure chang exe under have 重新啟動 switch option 1 海量數據的存儲問題 如今隨著互聯網的發展,數據的量級也是撐指數的增長,從GB到TB到PB。對數據的各種操作也是愈加的困難,傳統的關系性數據庫已經無法滿足快速

在VS新增lib的三種方法

在VS中新增lib庫的三種方法 注意: 1、每種方法也要複製相應的DLL檔案到相應目錄,或者設定DLL目錄的位置,具體方法為:"Properties" -> "Configuration Properties" -> "Deb

linux建立自己的靜態 動態並使用

庫依賴: gcc connect.c –o connect –I /usr/include/mysql –L /usr/lib/mysql -lmysqlclient//-I是找到自己寫的標頭檔案所在的位置 -L是找到自己所寫的動態庫所在的位置,並且寫上函式名,靜態庫不用寫-L,只寫函式名//-I 是i 的大

Linux核心新增自己的驅動程式

就說一下怎麼新增進去吧。首先你要把驅動程式寫好。我已新增 首先在drivers目錄下面建立GPIO資料夾,,資料夾下面建立三個檔案,分別是:gpio.c,Kconfig Makefile,三個檔案。     gpio.c是你的驅動程式,Kconfig是配置選單,也就是它會在

ubuntu新增非標準路徑的動態

     Linux系統中,怎樣讓程式找到非標準路徑下的動態庫?     在Linux中,動態庫的尋找和載入是由/lib/ld.so完成的。它會在標準路徑和已新增的非標準路徑中查詢和載入所需的動態庫。

linux新增ftp使用者許可權只能訪問自己目錄

在linux中新增ftp使用者,並設定相應的許可權,操作步驟如下: 1、環境:ftp為vsftp。被限制使用者名稱為test。被限制路徑為/home/test 2、建使用者:在root使用者下: useradd -d /home/test test //增加使用者t

Linux新增和刪除使用者

命 令: userdel 功能說明:刪除使用者帳號。 語  法:userdel [-r][使用者帳號] 補充說明:userdel可刪除使用者帳號與相關的檔案。若不加引數,則僅刪除使用者帳號,而不刪除相關檔案。 參  數: -f  刪除使用者登入目錄以及目錄中所有檔案。 -r 遞迴(一個一個的)刪除 警告: 請

ES6新增的Object.assign()方法

ES6提供了Object.assign()方法用於物件的合併,將源物件( source )的所有可列舉屬性,複製到目標物件( target )。 Object.assign()方法的第一個引數是目標物件,後面的引數都是源物件。 注意,如果目標物件與源物件有同名屬性,或多個源物件有同名屬性,則

linuxsupportconfig安裝與使用方法

由於工作原因,平時需要suse的工程師做二線技術支援,除了經常會提交kdump分析的結果給suse 工程師定位根因,而在沒有kdump生成時,經常會用的指令就是supportconfig收集系統資訊,其收集內容基本涵蓋了核心、模組、系統、服務等幾乎所有我們能想到的資訊,另外還會出一份簡單的health che

linux更新glibc檔案到2.17

1 確保安裝過gcc yum install gcc 2 獲取glibc相關版本 wget http://ftp.gnu.org/pub/gnu/glibc/glibc-2.17.tar.xz 3 解壓建立目錄 xz -d glibc-2.17.tar.xz tar -x

Linux新增、修改、刪除使用者和使用者組

一、使用者: 在建立使用者時,需要為新建使用者指定一使用者組,如果不指定其使用者所屬的工作組,自動會生成一個與使用者名稱同名的工作組。建立使用者user1的時候指定其所屬工作組users,例:useradd –g users user1 1、使用命令 useradd 建立使用者 例:usera

simulink新增模型方法

1. 在Maltab安裝路徑某個地方建立一個資料夾。比如說在E:\MATLABR2009a\toolbox\ 路徑下面建立了一個資料夾MyLib, 也就是E:\MATLABR2009a\toolbox\MyLib 2. 把你的庫檔案( .mdl )檔案 放到這個資料夾下面 3. 在這個資料夾下面建立

Linux的動態和靜態(.a.la.so.o)

​ Linux中的動態庫和靜態庫(.a/.la/.so/.o) 原文地址:https://www.cnblogs.com/findumars/p/5421910.html 在windows下,一般可以通過檔案的字尾名來識別檔案的型別。在Linux下大致上也是可以的。但是要明

linuxstat函式和使用方法

stat 函式講解 表頭檔案: #include <sys/stat.h> #include <unistd.h> 定義函式: int stat(const char *file_name, struct

Ubuntu terminal新增命令執行路徑

在Terminal中如何在任何目錄下都能執行名為xx.sh的指令碼?為了解決這個問題,首先需要知道Terminal下執行指令碼的過程。 在系統預設環境變數PATH中的路徑下查詢當前指令碼 執行該指令碼 如何檢視系統預設環境變數PATH中的路徑? env | gr

Linuxfind命令基本使用方法

Linux中find命令是系統中查詢檔案的命令,可以幫助使用者快速找出自己所需要的檔案。 通過檔名查詢 find -name 檔名 find /etc/ -name passwd ###查詢/etc目錄下的passwd 通過檔案巢狀層數查詢 find

MFC編輯框新增氣泡提示的方法

注意:經過測試發現VC6.0並不支援氣泡提示,以下方法適用於VS2010以上。 1.在標頭檔案中新增宣告: // 氣泡提示 void ShowBalloonTip(HWND hWnd, LPCTSTR lpszText, LPCTSTR lpszTittle, int nTTIcon