靜態編譯和動態編譯區別

今天在看apache和nginx的區別,其中看到了一個是這樣的:apache支持靜態和動態編譯;而nginx只支持靜態編譯。

   那麼什麼是動態編譯,什麼又是靜態編譯呢,特意拿出了《鳥哥的linux私房菜》,特把重點總結以下。

   依據一個函數庫**是否被編譯到程序內部**能夠把函數庫分爲兩種:動態函數庫和靜態函數庫:
  1. 靜態函數庫
    通常擴展名爲(.a),這類的函數庫一般擴展名爲libxxx.a 。
    這類函數庫在編譯的時候會直接整合到程序中,因此利用靜態函數庫編譯成的文件會比較大,這類函數庫最大的優勢就是編譯成功的可執行文件能夠獨立運行,而再也不須要向外部要求讀取函數哭的內容;可是從升級難易度來看明顯沒有優點,若是函數庫更新,須要從新編譯。linux

  2. 動態函數庫
    動態函數庫的擴展名通常爲(.so),這類函數庫一般名爲libxxx.so 。
    與靜態函數庫被整個捕捉到程序中不一樣,動態函數庫在編譯的時候,在程序裏只有一個「指向」的位置而已,也就是說當可執行文件須要使用到函數庫的機制時,程序纔會去讀取函數庫來使用;也就是說可執行文件沒法單獨運行。nginx

    綜上能夠知道,靜態函數庫可能都是源代碼,而動態函數庫自己就多是一個可執行文件。apache

相關文章
相關標籤/搜索