Linux複習之動態庫的建立與使用

2021-10-07 16:38:31 字數 927 閱讀 4053

動態庫的建立

還是以排序函式sort.c與bank.h為例:

1.編輯sort.c與bank.**件

2.生成sort.o檔案

指令:gcc -c -fpic sort.c

選項-fpic的作用是將原始檔編譯成帶有pic標誌的目標檔案

3.將檔案加入到動態庫中

動態庫的使用

和靜態庫一樣,動態庫也有引數法和直接法兩種使用方法

1.引數法

格式:gcc 主程式 -l 動態庫名(去掉lib和.so) -l 動態庫位址

2.直接法

格式:gcc 主程式 動態庫全名

將sort.c生成動態庫libmath.so之後,再通過引數法與動態庫進行鏈結生成可執行檔案,如下圖:

可以看見當執行a.out時,出現linux動態載入器找不到libmath.so檔案的錯誤提示資訊,我們知道動態庫是在程式執行階段進行鏈結,一般載入器會在/lib目錄下搜尋動態庫進行鏈結,所以一定要把建好的庫移動到/lib目錄下(需要root許可權),執行過程如下:

Linux複習之靜態庫與動態庫的區別

靜態庫在程式編譯時會被鏈結到目標檔案中,程式執行時不需要該庫。缺點是編譯後檔案較大,但是隔離性好。動態庫在編譯時不會被鏈結到目標 中,在程式執行時才被載入,所以程式執行時需要動態庫存在。優點是編譯後檔案較小,多個應用程式可以使用同乙個動態庫,啟動多個程式時,只需要將動態庫載入到記憶體一次。通過之前的...

Linux複習之靜態庫的建立

庫是在鏈結階段和相應的.o檔案生成可執行檔案,根據鏈結方式的不同,可以分為靜態庫與動態庫。當使用靜態庫時,聯結器會找出程式所需的函式,將它們複製到執行檔案中,因為是完整複製,所以一旦鏈結成功,可執行檔案在靜態庫不存在的情況下依然可以執行。動態庫與靜態庫不同,動態庫會在程式內留下乙個 標記,當程式執行...

Linux的靜態庫與動態庫的建立

我們在使用每一種程式語言時都會遇到函式庫的概念,只需要新增某個標頭檔案,就可以呼叫其中提供的各種函式介面,簡單便捷的實現多種功能。本文將向大家介紹在linux系統中,如何建立c語言的靜態函式庫和動態函式庫。靜態庫在程式編譯時會被鏈結到目標 中,在程式執行時便不再需要相應靜態庫檔案。1 建立相關原始檔...