apache動態編譯 靜態編譯區別

2021-04-19 03:28:10 字數 1754 閱讀 5860

以前編譯apache的時候

都是google搜尋到的直接拿來用

這次自己編譯mod_rewrite和ssl遇到了問題

又不知道問題出在**

乙個是mod_rewrite模組沒有起作用

乙個是以ssl啟動apache的時候報告如下錯誤:

後來經過查詢

明白了問題出在**

當時我是這麼編譯apache的

./configure

--prefix=/usr/local/apache2

--enable-so

--enable-mods-shared=most

--enable-rewrite

--enable-speling

--enable-forward

--enable-ssl

--with-ssl=/usr/local/openssl

而問題就出在–enable-so

現在知道了–enable-so的意思是說

讓apache 核心裝載dso,但是不實際編譯任何動態模組

–enable-modulename的意思是說 編譯幷包含模組modulename

而 –enable-modulename=shared 的意思是說將這個模組編譯成動態的.

明白了這幾個選項的意思,感覺就水落石出了

根據上面的總結

我應該去掉–enable-so這行

如何希望動態編譯模組

比如:–enable-rewrite應該替換為: –enable-rewrite=shared

最後,我將要編譯的應該為:

./configure

--prefix=/usr/local/apache2

--enable-mods-shared=most

--enable-rewrite

--enable-speling

--enable-forward

--enable-ssl

--with-ssl=/usr/local/openssl

上面中 –enable-mods-shared=most的意思是說 動態的編譯進來大多數的模組

而 –enable-mods-shared=all是指動態的編譯所有的模組

如果把-shared去掉,就是靜態的編譯了…

綜上所述

總結出了我個人對apache的動態與靜態編譯的理解

好比有兩個人a和m

a代表apache,m代表module

要想讓a使用m的東西

乙個方法是把m的東西都放到a那裡去,a使用的時候就是現成的了

就是所謂的靜態編譯

還有乙個方法,

就是告訴a, m的住址,當a要使用m的東西的時候,a去找m,然後使用

不過,這種方法要注意的乙個問題就是:m必須要有實際的住址,

否則a會找不到m而產生錯誤的,我此文開始提到的 apachectl startssl產生

的錯誤就是這個原因,應該再編譯好ssl才可以的.

這種方法也就是apache 的動態(dso)編譯了

apache動態編譯 靜態編譯問題

以前編譯apache的時候 都是google搜尋到的直接拿來用 這次自己編譯mod rewrite和ssl遇到了問題 又不知道問題出在 乙個是mod rewrite模組沒有起作用 乙個是以ssl啟動apache的時候報告如下錯誤 後來經過查詢 明白了問題出在 當時我是這麼編譯apache的 conf...

Apache動態編譯 靜態編譯詳解 zz

在使用 configure編譯的時候,如果不指定某個模組為動態,即沒有使用 enable mods shared module 或者enable module shared這個2 個中的乙個,那麼所有的預設模組為靜態。那麼何謂靜態?其實就是編譯的時候所有的模組自己編譯進 這個檔案中 我們啟動可以使用...

apache動態編譯和靜態編譯區別

apache的動態和靜態編譯區別 一 含義 動態意味著不用此模組的時候就不需要load進來,使用的時候需要顯示的load進來 靜態意味著先把模組load進來,想用的時候直接使用.二 編譯 靜態編譯 當只需要靜態編譯module的時候,語法應寫成 enable ssl或 enable ssl stat...