2014/11/12

[Linux] Static Library和 Dynamic Library編譯

在Linux下編譯靜態連結函式庫(Static Library)和動態連結函式庫(Dynamic Library),兩者的差別是靜態函式庫是把整個Library包進去執行檔,因此可以保證到不同機器環境下執行,也不會因為少了這個函式庫導致無法執行檔案,但其缺點是檔案會比較大,假如大部分檔案都需要用到相同的函式庫,但全部都使用靜態連結的方式,那這樣非常的佔空間資源;而動態連結函式庫的好處,就是可以讓多個執行檔案,同時連結使用,可以減少佔空間,但是卻容易發生如果Library的版本不同,會導致連結執行錯誤。

兩者各有優缺點,要端看環境軟體和設定需求,來選擇編譯的方式。譬如檔案共用的多而且函式庫常見,那就要採用動態;少數檔案使用,或者函式庫較稀有,那就採用靜態設計。