介紹在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...