函式庫

  1. 靜態函式庫:
    1. 附檔名:通常為 libxxx.a 的類型;
    2. 編譯行為:整個函式庫的資料被整合到執行檔中,所以利用編譯成的檔案會比較大。
    3. 獨立執行的狀態:編譯成功的可執行檔可以獨立執行,而不需要再向外部要求讀取函式庫的內容。
    4. 升級難易度:函式庫升級後,連執行檔也需要重新編譯過一次,將新的函式庫整合到執行檔當中。
  2. 動態函式庫:
    1. 附檔名:通常為 libxxx.so 的類型;
    2. 編譯行為:編譯時執行檔中僅具有指向動態函式庫所在的指標而已,並不包含函式庫的內容,所以檔案會比較小。
    3. 獨立執行的狀態:不能被獨立執行,程式讀取函式庫時,函式庫『必須要存在』,且函式庫的『所在目錄也不能改變』。
    4. 升級難易度:函式庫升級後,執行檔不需要進行重新編譯,故目前的 Linux distribution 比較傾向使用動態函式庫。