今天在看apache和nginx的區別,其中看到了一個是這樣的:apache支持靜態和動態編譯;而nginx只支持靜態編譯。 那麼什麼是動態編譯,什麼又是靜態編譯呢,特意拿出了《鳥哥的linux私房菜》,特把重點總結以下。 依據一個函數庫**是否被編譯到程序內部**能夠把函數庫分爲兩種:動態函數庫和靜態函數庫:
靜態函數庫
通常擴展名爲(.a),這類的函數庫一般擴展名爲libxxx.a 。
這類函數庫在編譯的時候會直接整合到程序中,因此利用靜態函數庫編譯成的文件會比較大,這類函數庫最大的優勢就是編譯成功的可執行文件能夠獨立運行,而再也不須要向外部要求讀取函數哭的內容;可是從升級難易度來看明顯沒有優點,若是函數庫更新,須要從新編譯。linux
動態函數庫
動態函數庫的擴展名通常爲(.so),這類函數庫一般名爲libxxx.so 。
與靜態函數庫被整個捕捉到程序中不一樣,動態函數庫在編譯的時候,在程序裏只有一個「指向」的位置而已,也就是說當可執行文件須要使用到函數庫的機制時,程序纔會去讀取函數庫來使用;也就是說可執行文件沒法單獨運行。nginx
綜上能夠知道,靜態函數庫可能都是源代碼,而動態函數庫自己就多是一個可執行文件。apache