Linux庫檔案使用與編譯

2021-09-27 12:42:50 字數 1777 閱讀 5095

介紹在linux下使用靜態庫、共享庫、動態庫的方法。

共享庫

動態庫

/usr/lib

/usr/local/lib

首先在「ld_library_path」環境變數所設定的路徑下查詢(一般都沒有給此環境變數賦值)

搜尋動態裝載器在/etc目錄下的快取檔案/etc/ld.so.cache(此檔案由命令ldconfig建立更新)。

ldd命令–檢視到某可執行程式共享庫清單

首先將所需要檔案編譯成目標檔案

使用ar命令建立靜態庫

編譯執行

使用-shared來建立共享庫

這裡的so.1.0表示對應的完整版本號,具體可參考這裡。

建立soname連線:

這裡建立乙個鏈結,只是為了方便以後版本更新時,只需要更改鏈結的路徑,不改變編譯**

編譯並連線引用庫檔案

其中,-l表示搜尋路徑,./表示搜尋當前路徑

-lhello

執行,需要新增當前目錄pwd到環境變數中

如果希望在使用聯結器時不使用-ldirectory標識就可以查詢到該庫,則可以採用以下方式之一:

使用示例

介紹在linux下使用靜態庫、共享庫、動態庫的方法。

共享庫

動態庫

/usr/lib

/usr/local/lib

首先在「ld_library_path」環境變數所設定的路徑下查詢(一般都沒有給此環境變數賦值)

搜尋動態裝載器在/etc目錄下的快取檔案/etc/ld.so.cache(此檔案由命令ldconfig建立更新)。

ldd命令–檢視到某可執行程式共享庫清單

首先將所需要檔案編譯成目標檔案

使用ar命令建立靜態庫

編譯執行

使用-shared來建立共享庫

這裡的so.1.0表示對應的完整版本號,具體可參考這裡。

建立soname連線:

這裡建立乙個鏈結,只是為了方便以後版本更新時,只需要更改鏈結的路徑,不改變編譯**

編譯並連線引用庫檔案

其中,-l表示搜尋路徑,./表示搜尋當前路徑

-lhello

執行,需要新增當前目錄pwd到環境變數中

如果希望在使用聯結器時不使用-ldirectory標識就可以查詢到該庫,則可以採用以下方式之一:

使用示例

Linux編譯庫檔案

靜態庫檔名的命名規範是以lib為字首,緊接著跟靜態庫名,擴充套件名為.a,動態庫檔名命名規範和靜態庫檔名命名規範類,也是在動態庫名增加字首lib,但其擴充套件名為.so。1 動態庫 在linux下,使用gcc shared c o lib so可以編譯乙個動態庫,使用gcc yyy.c l l.就可...

linux動態庫的編譯與使用

linux下的動態庫以.so為字尾,我也是初次在linux下使用動態庫,寫一點入門步驟,以便以後能方便使用。第一步 編寫linux程式庫 檔案1.動態庫介面檔案 動態庫介面檔案getmaxlen.h ifndef getmaxlen h define getmaxlen h int getmaxle...

linux 庫檔案 生成與使用

1 linux庫檔案分為靜態庫和動態庫兩種。靜態庫習慣以.a 結尾,而動態庫習慣以.so shared object 結尾。而且必須以lib開頭。2 靜態庫的原則是 以空間換時間 增加程式體積,減少執行時間 生成 在編譯時候,先生成目標檔案.o,然後用ar檔案對目標檔案歸檔,生成靜態庫檔案。例如 a...