用 apxs 辅助工具在 Win32 下编译 Apache Module

最近 Passport Module 有一个重大升级,在自己的 WinXP 上做开发的同事需要我们提供一个 win32 的新模块。

上次编译 module 是 2 年前了,那时候环境为 Apache 2.0.x + VC7.1 (2003),现在则是 Apache 2.2.x + VC9.0 (2008),按以前的套路三下五除二搞出来一个 mod_passport 后,发现 apache 无法加载。

折磨了半天,最后是从一个专门作 apache module win32 build 的地方,弄到一个专门给 Win32 平台用的 apxs (http://www.apachelounge.com/download/apxs_win32.zip)。用它编译则轻松搞定,看起来原因是必须用 MT.exe 加入 manifest 后,才能正确加载模块(上网搜了一下,从 VC8.0/VS2005开始就是介个样子了)。就是:

cl /MD /D "WIN32" /c mod_foobar.c
link /DLL mod_foobar.obj libhttpd.lib libapr-1.lib
mt /manifest mod_foobar.dll.manifest /outputresource:mod_foobar.dll;#2

PS: 对于一个需要偶尔在 win32 下编译开源程序的 console控来说,Windows SDK for Windows Server 2008 and .NET Framework 3.5 就足够了,已经自带了 VC 9.0,不用再去安装 Visual C++ 2008 Express 了

Topic: 技术

评论

编译没问题了 也生成了.manifest 可就是启动不了apache 还可能是什么原因吗?