Linux下靜態庫和動態庫的生成

2021-09-14 04:58:09 字數 704 閱讀 6710

1.何為靜態庫……何為動態庫……?

windows下:.dll 是動態庫 .lib是靜態庫

linux下: .so是動態庫 .a是靜態庫

靜態庫:

在生成可執行程式的時候,會把函式的具體執行方式封裝到程式中,程式體積比較大,只要能編譯成功,就可以在任意相同的平台上執行

動態庫:

在生成可執行程式的時候,只會把函式的介面封裝到程式中,體積較小,在程式開始執行時,才呼叫函式的具體執行方式

2.具體生成方式

靜態庫:

<1> 生成 .o檔案

gcc -c fun.c (生成fun.o)

<2>生成靜態庫

ar crs -o libfun.a fun.o

<3>鏈結

gcc main.c -o main libfun.a

動態庫:

<1>生成動態庫 .o檔案

gcc -fpic -c fun.c (生成fun.o)

<2>生成動態庫

gcc -fpic -shared -o libfun.so fun.o

<3>鏈結

gcc main.c -o main -i xx1 -l xx2 -lfun

1.ldconfig 動態庫路徑

2.將庫檔案複製到 /usr/bin 或 /lib目錄下面

linux 下靜態庫和動態庫

我們通常把一些公用函式製作成函式庫,供其它程式使用。函式庫分為靜態庫和動態庫兩種。靜態庫在程式編譯時會被連線到目標 中,程式執行時將不再需要該 靜態庫。動態庫在程式編譯時並不會被連線到目標 中,而是在程式執行是才被載入,因此在程式執行時還需要動態庫存在。本文主要通過舉例來說明在 linux中如何建立...

linux下的靜態庫和動態庫

庫是什麼?在我們實際程式設計中,經常會引入各種庫函式,那麼庫是什麼?從本質上來說是一種可執行 的二進位制格式,可以被載入記憶體中執行。庫分靜態庫和動態庫兩種。靜態庫 linux下靜態庫的名字一般是lib a,為庫的名字。利用靜態函式庫編譯成的檔案比較大,因為整個函式庫的所有資料都會被整合進目標 中,...

linux下的靜態庫和動態庫

意義 為了避免 的重寫率,我們可以將已經寫好的 形成乙個庫,當我們再次用到的時候可以直接呼叫,而不是重新去寫,即 站在巨人的肩膀上 linux下有兩種庫 一 靜態庫 準備工作 int swap int x,int y include int main 1 將我們需要的函式生成乙個.o 檔案 root...