这里我使用了 –disable-snapshot-build 关掉了 snapshot 模式,因为这个命令会强制开启许多对我来说无用的选项,比如 aolserver,apache sapi 之类的,最后我加上了 –with-xdebug=shared,在使用这个选项之前最好确认 xdebug 源码的位置正确,如果没什么问题的话,buildconf 之后,在 configure –help 中你可以看到这个选项,shared 表示编译成动态链接库。 如果你要编译其它的 pecl 扩展(比如 apc,bcompiler 等),只需要相关的源码下载放到 pecl 目录,重新执行 buildconf 即可。 若 configure 无问题,最后执行 nmake 开始编译过程,Good Luck! :) 最后一步 nmake snap,组织所有编译好的文件的目录结构(也就是你平时下载的 PHP 二进制包的结构),并用 zip 打包。 最终生成的文件位置:D:php-sdkphp54devphp-5.4.0RC3Release(_TS) 错误处理: nmake 过程中会产生很多的 Warning,只要不中断,那么就无视好了。 关于 calendar.c 和 jewish.c 的编码问题: 复制代码 代码如下: extcalendarcalendar.c : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss dow.c easter.c french.c gregor.c jewish.c extcalendarjewish.c : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss extcalendarjewish.c(324) : error C2001: newline in constant extcalendarjewish.c(325) : error C2001: newline in constant extcalendarjewish.c(326) : error C2001: newline in constant extcalendarjewish.c(327) : error C2001: newline in constant NMAKE : fatal error U1077: ""C:Program Files (x86)Microsoft Visual Studio 9.0VCBincl.exe"" : return code "0x2" Stop.
这两个文件使用的是 ANSI 编码,包含有一些西文的特殊字符,GBK 字符集中不存在。 可用 editplus 打开,编码选择:West European (Windows),另存为 UTF-8。