Author: wofeiwo
Date: Aug 6th 2006
学习PHP,从编译开始:)
类Unix系统上的编译方式各位基本都很熟悉,网上也有大把的资料可以查询.但是却很少见到PHP在windows平台上的编译方法.因此也导致了本文的诞生.你可以将本文当作对PHP手册上对windows上编译PHP一章的扩充版本.
首先,借用PHP手册上的一段话:
开始之前,很值得回答一下这个问题:为什么在 Windows 下编译这么难?两个原因:
Windows 下还没有愿意免费共享代码的开发人员群体。直接结果就是没有足够的投资去建立支持这种开发方式的体系。大体上,尽量得到的可用资源都是从 Unix 下的工具来的。
不要奇怪这种传统不会时出现。
下面几乎所有的说明都是“看过就忘”的类型。所以坐稳当并且尽可能忠实地按照说明来做。
环境需求:首先,为了在windows上安编译,我们需要有 Microsoft 开发环境.推荐使用Mirosoft Visual C++ 6.0,当然VC++.net也同样可以.
从PHP5开始,支持 Microsoft .NET 的工具链(你需要安装 Windows Platform SDK, Visual C++ Toolkit and .NET Framework SDK)
准备工作:
除此之外,还需要下载一些必要文件:
PHP 站点中的 win32 编译工具 http://www.php.net/extra/win32build.zip。
PHP 使用的 DNS 解析器的源代码:http://www.php.net/extra/bindlib_w32.zip。编译好后,用这个替代 win32build.zip 中的 resolv.lib。
如果计划把 PHP 编译成 Apache 的静态模块那还需要 Apache 源程序。
另外在编译过程中可能还需要其他库的支持,比如libxml(PHP5需要,可以从这里下载http://ctindustries.net/dom/libxml/) 或ICU (PHP6需要, http://icu.sourceforge.net/)
当然你还需要PHP原代码本身,你可以从 http://www.php.net/downloads.php 或是使用 CVS (http://cn.php.net/anoncvs.php)获得.
找个文件夹,把他们放到一起.(比如C:\PHP)
将win32build.zip,bindlib_w32.zip,PHP-x.x.x.tar.gz及其他库文件分别解压缩到C:\PHP中.
新建一个目录 c:\usr\local\lib。将 bison.simple 从 c:\PHP\win32build\bin 拷贝到 c:\usr\local\lib。
使用VC++编译C:\PHP\bindlib_w32下的resolv.lib库。自己决定是需要调试信息(bindlib - Win32 Debug)还是不需要(bindlib - Win32 Release)。编译适当的配置:
图形界面用户,运行 VC++,选择 File => Open Workspace,找到 c:\PHP\bindlib_w32 目录并选择 bindlib.dsw 文件。接着选择 Build => Set Active Configuration 菜单并
选择需要的配置。最后选择 Build => Rebuild All。
命令行用户,确认要么注册了 C++ 环境变量,要么运行了 vcvars.bat,然后运行下面任意一行命令:
msdev bindlib.dsp /MAKE "bindlib - Win32 Debug"
msdev bindlib.dsp /MAKE "bindlib - Win32 Release"
到这一步,应该得到了一个 resolv.lib 在 c:\PHP\bindlib_w32\Debug 或者 Release 目录下。将此文件拷贝到 c:\PHP\win32build\lib 目录下并覆盖同名的文件。
注意:如果有其他库文件及头文件,可以将其中的include,lib,bin文件夹复制到c:\PHP\win32build中
旧的编译模式 -- 使用VC++进行编译:首先配置VC++,在菜单中选择 Tools => Options。在对话框中,选择 directories 标签。依次将下拉框改为 Executables,Includes 和 Library files。添加下面的路径,使其看
上去应该是:
Executable files: c:\PHP\win32build\bin
Include files: c:\PHP\win32build\include
Library files: c:\PHP\win32build\lib
然后你可以选择 File => Open Workspace 菜单并选择 c:\PHP\PHP-x.x.x\win32\PHPXts.dsw。接着选择 Build => Set Active Configuration 菜单并选择想要的配置,要么是
PHPXts - Win32 Debug_TS 要么是 PHPXts - Win32 Release_TS。最后选择 Build => Rebuild All。
命令行用户,请参考上面编译 resolv.lib的步骤.
到这一步,应该得到一个可用的 PHP.exe 在 c:\PHP\PHP-x.x.x.\Debug_TS 或 Release_TS 目录下。
然后你可以选择不同的活动配置,来完成CLI,isapi等版本的PHP编译.
新的编译模式 -- 使用nmake: (PHP>=5)
注意:使用此方式你必须安装5.6版本以上的WScript.Shell对象.(http://www.microsoft.com/downloads/details.aspx?FamilyID=c717d943-7e4b-4622-86eb-95a22b832caa&DisplayLang=en)
首先打开windows命令行模式,进入c:\PHP\PHP-x.x.x目录,执行buildconf.bat
C:\>cd C:\PHP\PHP-5.1.4
C:\PHP\PHP-x.x.x>buildconf.bat
Rebuilding configure.js
Now run 'cscript /nologo configure.js --help'
然后使用'cscript /nologo configure.js --help'查看configure的各种选项,并按照你的需要配置并生成makefile文件
提示:如果你不熟悉configure的用法,推荐使用cscript /nologo configure.js --enable-snapshot-build就可以了
最后执行按照提示nmake.
到这里,你可以在c:\PHP\PHP-x.x.x.\Release, Release_TS, Debug 或 Debug_TS目录下找到编译好的PHP了.
当然你也可以选择编译单个文件
nmake php_mssql.dll
如果你想安装把你编译的PHP安装在系统上.可以使用:
nmake install
nmake将把PHP文件复制到默认的安装目录中C:\PHP5.(可以在编译前通过 configure --enable-prefix=dir 来修改)
参考文档:
http://kromann.info/article.php?Id=11062862408280000 Building PHP5 on Win32
http://www.PHP.net/manual/en/install.windows.building.php
http://kromann.info/show.php?Id=2 configure help