1. 程式人生 > >Linux下靜態庫和動態庫(共享庫)

Linux下靜態庫和動態庫(共享庫)




Linux作業系統支援的函式庫分為靜態庫和動態庫,動態庫又稱共享庫。linux系統有幾個重要的目錄存放相應的函式庫,如/lib /usr/lib。



靜態函式庫:

      這類庫的名字一般是libxxx.a;利用靜態函式庫編譯成的檔案比較大,因為整個函式庫的所有資料都會被整合進目的碼中,他的優點就顯而易見了,即編譯後的執行程式不需要外部的函式庫支援,因為所有使用的函式都已經被編譯進可執行檔案了。當然這也會成為他的缺點,因為如果靜態函式庫改變了,那麼你的程式必須重新編譯,而且體積也較大。



動態函式庫:

      這類庫的名字一般是libxxx.so,動態庫又稱共享庫;相對於靜態函式庫,動態函式庫在編譯的時候並沒有被編譯進目的碼中,你的程式執行到相關函式時才呼叫該函式庫裡的相應函式,因此動態函式庫所產生的可執行檔案比較小。由於函式庫沒有被整合進你的程式,而是程式執行時動態的申請並呼叫,所以程式的執行環境中必須提供相應的庫。動態函式庫的改變並不影響你的程式,所以動態函式庫的升級比較方便。而且如果多個應用程式都要使用同一函式庫,動態庫就非常適合,可以減小應用程式的體積。