靜態庫是一些目標**的集合.linux環境下的靜態庫目標檔案一般以.a作為目標檔案的副檔名.linux環境下使用ar命令建立乙個靜態庫.靜態庫的優點在於使用簡單,編譯快速.靜態庫在應用程式生成時,已經編譯成為可重定位的目標檔案,因此可以不必再編譯,節省編譯時間,以最短的時間生成可執行程式.
假定有檔案static_lib.c,內容如下:
int add(int a , int b)
int sub(int a , int b)
int mul(int a , int b)
int div(int a , int b)
用下面命令編譯,生成乙個可重定位的目標檔案,命令如下:
gcc -c static_lib.c
再使用以下命令建立靜態庫:
ar rcs static_lib.a static_lib.o
其中ar是建立靜態庫的命令,rcs是3個引數.r表示把列表中的目標檔案加入到靜態庫中;c表示若指定庫不存在,則建立該庫檔案;s表示更新靜態庫檔案的索引,使之包含新加入的目標檔案的內容.
使用靜態為時要編寫乙個標頭檔案static_lib.h內容如下所示:
extern int add(int a, int b);
extern int sub(int a, int b);
extern int mul(int a, int b);
extern int div(int a, int b);
主函式main.c內容如下所示:
#include #include "static_lib.h"
int main()
使用-static選項對靜態庫進行引用,整個命令如下所示: gcc建立和使用靜態庫 動態庫
gcc建立和使用靜態庫 動態庫 下面以工程libtest為例說明gcc 建立和使用 靜態庫 動態庫的過程,libtest目錄結構和內容如圖1所示,其中三個檔案hello.h,hello.c和main.c的內容如下。libtest include hello.h ifdef hello h defin...
gcc建立和使用靜態庫 動態庫
下面以工程libtest為例說明gcc建立和使用靜態庫 動態庫的過程,libtest目錄結構和內容如圖1所示,其中三個檔案hello.h,hello.c和main.c的內容如下。圖1libtest include hello.h ifdef hello h define hello h void h...
gcc建立,使用動態庫
動態庫在程式啟動時被裝載。在linux下一般是.so檔案。當乙個應用程式裝載了乙個動態庫後,其它應用程式仍可以裝載同乙個動態庫。這個被多程序同時使用的動態庫在記憶體中只有乙個副本。下面演示如何建立,使用動態庫 原始檔share lib.c內容如下 include void print1 void p...