1. 程式人生 > >靜態編譯和動態編譯區別

靜態編譯和動態編譯區別

  1. 靜態函式庫
    一般副檔名為(.a),這類的函式庫通常副檔名為libxxx.a 。
    這類函式庫在編譯的時候會直接整合到程式中,所以利用靜態函式庫編譯成的檔案會比較大,這類函式庫最大的優點就是編譯成功的可執行檔案可以獨立執行,而不再需要向外部要求讀取函式哭的內容;但是從升級難易度來看明顯沒有優勢,如果函式庫更新,需要重新編譯。

  2. 動態函式庫
    動態函式庫的副檔名一般為(.so),這類函式庫通常名為libxxx.so 。
    與靜態函式庫被整個捕捉到程式中不同,動態函式庫在編譯的時候,在程式裡只有一個“指向”的位置而已,也就是說當可執行檔案需要使用到函式庫的機制時,程式才會去讀取函式庫來使用;也就是說可執行檔案無法單獨執行。

    綜上可以知道,靜態函式庫可能都是原始碼,而動態函式庫本身就可能是一個可執行檔案。