<p>Author: wofeiwo<br />Date: Aug 6th 2006 </p>
    <p>学习PHP,从编译开始:)</p>
    <p>类Unix系统上的编译方式各位基本都很熟悉,网上也有大把的资料可以查询.但是却很少见到PHP在windows平台上的编译方法.因此也导致了本文的诞生.你可以将本文当作对PHP手册上对windows上编译PHP一章的扩充版本.</p>
    <p>首先,借用PHP手册上的一段话:<br /><br /></p>
    <hr />

开始之前,很值得回答一下这个问题:为什么在 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:</span>>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

Comments
Write a Comment