標籤:windows下利用apxs編譯源碼apache模組
windows環境下使用apxs編譯添加apache模組
簡介說明:本文使用mod_limitipconn模組為例。
環境:
windows7x86系統
apache2.4.18
目標:
在windows環境下,利用mod_limitipconn0.24源碼、apxs為apache2.4.18添加mod_limitipconn模組。
分析:
limitipconn模組最新版已經支援apache2.4了。但是沒有編譯好的對應版本。因此需要自己動手編譯模組。在windows下要實現這個目標,需要安裝以下幾個軟體:apxs(windows版)、perl(windows版本的,這是為了可以安裝apxs)、vc++6.0(要安裝版的。這個是apxs編譯c源碼模組調用使用的。也可以使用其他的軟體)。
:
apxs
http://www.apachelounge.com/download/additional/
perl(ActivePerl)
http://www.activestate.com/activeperl/downloads
vc++6.0
要安裝版。綠色版編譯時間出錯。
步驟:
安裝perl(ActivePerl),直接預設安裝就好。安裝完成請確認windows環境變數的path是否添加了perl的文位置。沒有自動添加,請手工追加。
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M02/8D/B3/wKioL1imu7GCLPBvAAdhiJHweqc543.png-wh_500x0-wm_3-wmp_4-s_2534098524.png" title="1.png" alt="wKioL1imu7GCLPBvAAdhiJHweqc543.png-wh_50" />
安裝vc++6.0,這個一定使用安裝版的,否則編譯時間會報錯。我的安裝目錄:D:\ProgramFiles\Microsoft Visual Studio,安裝完成確認D:\ProgramFiles\Microsoft VisualStudio\VC98\Bin\cl.exe,雙擊是否報錯。(若報錯,請根據報錯資訊修複。我的報錯:mspdb60.dll檔案丟失,下載該檔案放到cl.exe所在目錄)。並把“D:\ProgramFiles\Microsoft Visual Studio\VC98\Bin\”添加到環境變數path中。
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M00/8D/B3/wKioL1imu92yMtPPAAdhgP2YRzQ981.png-wh_500x0-wm_3-wmp_4-s_1476795905.png" title="2.png" alt="wKioL1imu92yMtPPAAdhgP2YRzQ981.png-wh_50" />
安裝apxs:
首先說明:apache安裝目錄:D:\wamp\bin\apache\apache2.4.18\
運行windows的命令提示字元(即cmd),並進入apxs安裝包檔案所在位置。運行以下命令:“perlConfigure.pl --with-apache2=D:\wamp\bin\apache\apache2.4.18--with-apache-prog=httpd.exe”。
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M00/8D/B6/wKiom1imvALhrOn7AAAyCVDAo24342.png-wh_500x0-wm_3-wmp_4-s_2587415461.png" title="3.png" alt="wKiom1imvALhrOn7AAAyCVDAo24342.png-wh_50" />
註:會產生D:\wamp\bin\apache\apache2.4.18\build\config_vars.mk檔案和D:\wamp\bin\apache\apache2.4.18\bin\apxs.bat檔案。
修改D:\wamp\bin\apache\apache2.4.18\build\config_vars.mk,效果如下:
CC = cl
LD = link
CPP = cl-nologo -E
LDFLAGS =kernel32.lib ws2_32.lib apr-1.lib aprutil-1.lib libapr-1.liblibapriconv-1.lib libaprutil-1.lib libhttpd.lib mod_dav.lib xml.lib/nologo /subsystem:windows /dll /machine:I386/libpath:"D:\wamp\bin\apache\APACHE~1.18\lib"
註:cl、link是調用D:\ProgramFiles\Microsoft VisualStudio\VC98\Bin\下的cl.exe、link.exe。其中LDFLAGS=...”D:\wamp\bin\apache\APACHE~1.18\lib”採用預設的就可以(”D:\wamp\bin\apache\APACHE~1.18\lib”是我的預設的。其實就是apache安裝目錄下的lib檔案夾的目錄)。若LDFLAGS項目沒有更改編譯模組時會報錯。
在命令提示字元中,運行“VCVARS32”,
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M01/8D/B6/wKiom1imvCXCpsIhAAA2AcG9wWc927.png-wh_500x0-wm_3-wmp_4-s_1037257986.png" title="4.png" alt="wKiom1imvCXCpsIhAAA2AcG9wWc927.png-wh_50" />
在windows環境變數中path,追加D:\wamp\bin\apache\apache2.4.18\bin\,
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M00/8D/B3/wKioL1imvF7y5eA7AAi_AB2FW8I312.png-wh_500x0-wm_3-wmp_4-s_2495511821.png" title="5.png" alt="wKioL1imvF7y5eA7AAi_AB2FW8I312.png-wh_50" />
在命令提示字元中進入mod_limipiconn源碼所在目錄,並運行如下命令:
apxs -i -c -amod_limitipconn.c
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M01/8D/B3/wKioL1imvIfyd2Y0AABSlhkqWaY931.png-wh_500x0-wm_3-wmp_4-s_2594398008.png" title="6.png" alt="wKioL1imvIfyd2Y0AABSlhkqWaY931.png-wh_50" />
重要說明:
會在D:\wamp\bin\apache\apache2.4.18\lib\產生mod_limitipconn.lib檔案。
會在D:\wamp\bin\apache\apache2.4.18\modules\產生mod_limitipconn.so檔案。
每次追加windows環境變數path下的內容,需要重新運行命令提示字元才會生效(或者說才能在命令提示字元中應用)。
編譯時間提示“windows.h”相關錯誤,請檢查D:\wamp\bin\apache\apache2.4.18\build\config_vars.mk檔案中的LDFLAGS是否修改,若已經修改,請使用安裝版的vc++6.0。
涉及的檔案位置羅列:
apache2.4.18安裝位置:D:\wamp\bin\apache\apache2.4.18、
vc++6.0安裝位置:D:\ProgramFiles\Microsoft Visual Studio
cl.exe、link.exe及VCVARS32.bat所在位置:D:\ProgramFiles\Microsoft Visual Studio\VC98\Bin\
apxs安裝後所在位置:D:\wamp\bin\apache\apache2.4.18\bin\
config_vars.mk所在位置:D:\wamp\bin\apache\apache2.4.18\build\config_vars.mk
perl安裝位置:C:\Perl\
mod_limitipconn源碼所在位置:D:\mod_limitipconn\
windows環境下使用apxs編譯添加apache模組