windows环境下使用apxs编译添加apache模块
简介说明:本文使用mod_limitipconn模块为例。
环境:
windows7
x86系统
apache
2.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的文位置。没有自动添加,请手工追加。如图:
安装vc++6.0,这个一定使用安装版的,否则编译时会报错。我的安装目录:D:\Program
Files\Microsoft Visual Studio,安装完成确认D:\Program
Files\Microsoft Visual
Studio\VC98\Bin\cl.exe,双击是否报错。(若报错,请根据报错信息修复。我的报错:mspdb60.dll文件丢失,下载该文件放到cl.exe所在目录)。并把“D:\Program
Files\Microsoft Visual Studio\VC98\Bin\”添加到环境变量path中。如图:
安装apxs:
首先说明:apache安装目录:D:\wamp\bin\apache\apache2.4.18\
运行windows的命令提示符(即cmd),并进入apxs安装包文件所在位置。运行以下命令:“perl
Configure.pl --with-apache2=D:\wamp\bin\apache\apache2.4.18--with-apache-prog=httpd.exe”。如图:
注:会生成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.lib
libapriconv-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:\Program
Files\Microsoft Visual
Studio\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”,如图:
在windows环境变量中path,追加D:\wamp\bin\apache\apache2.4.18\bin\,如图:
在命令提示符中进入mod_limipiconn源码所在目录,并运行如下命令:
apxs -i -c -a
mod_limitipconn.c
如图:
重要说明:
会在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:\Program
Files\Microsoft Visual Studio
cl.exe、link.exe及VCVARS32
.bat所在位置:D:\Program
Files\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\