靜態 / 動態 函式庫
[轉貼] 函式庫管理
函式庫:目標檔庫
靜態函式庫:
附檔名:通常為 libxxx.a 的類型;
編譯行為:整個函式庫的資料被整合到執行檔中,所以利用編譯成的檔案會比較大。
獨立執行的狀態:編譯成功的可執行檔可以獨立執行,而不需要再向外部要求讀取函式庫的內容。
升級難易度:函式庫升級後,連執行檔也需要重新編譯過一次,將新的函式庫整合到執行檔當中。
動態函式庫:
附檔名:通常為 libxxx.so 的類型;
編譯行為:編譯時執行檔中僅具有指向動態函式庫所在的指標而已,並不包含函式庫的內容,所以檔案會比較小。
獨立執行的狀態:不能被獨立執行,程式讀取函式庫時,函式庫『必須要存在』,且函式庫的『所在目錄也不能改變』。
升級難易度:函式庫升級後,執行檔不需要進行重新編譯,故目前的 Linux distribution 比較傾向使用動態函式庫。
[實作]
產生 靜態函式庫:
# ar crv libtest.a a.o b.o 產生libtest.a的靜態函式庫
產生 動態函式庫:
# gcc a.c b.c -shared -o libtest.so 編譯a.c及b.c成一個libtest.so動態函式
給其它程式compile時用:
# gcc sample.c -o sample -lm libxxx.so
ref :
1. 函式庫管理
2. Makefile教學(一)
沒有留言:
張貼留言