Windows下编译PHP5.4和xdebug全记录
实际上我最终目的是编译得到支持 php5.4 的 php_xdebug.dll,而在此之前,成功编译 php5.4 是必须的。
编译环境以及相关软件包:
1.microsoft visual c++ 2008 express edition with sp1
2.windows sdk 6.1
3.php sdk binary tools
4.dependable libs
5.php5.4 sources
6.xdebug 2.2.0-dev
如果你需要的是 vc6 的编译环境,那么你需要安装 visual c++ 6.0,而 sdk 则需要换成:
windows server 2003 psdk
编译过程:
准备好咖啡、可乐,做好准备,可能要折腾数小时…
安装 vc++ 2008 以及 windows sdk 6.1
建立如下目录:
d:\php-sdk
d:\php-sdk\php54dev
d:\php-sdk\pecl
解压 php-sdk-binary-tools-20110915.zip 中的所有文件至 d:\php-sdk
提取 deps-5.4-vc9-x86.7z 中的 deps 目录至 d:\php-sdk\php54dev
解压 php5.4 源码至 d:\php-sdk\php54dev,目录名任取,比如 php-5.4.0rc3
xdebug 的源码放到 d:\php-sdk\pecl\xdebug
最终的目录结构大概是这样子的:
d:\php-sdk>tree d:\php-sdk
folder path listing for volume disk_vol2
volume serial number is 0c74-ad73
d:\php-sdk
├───bin
├───php54dev
│ ├───deps
│ │ ├───bin
│ │ ├───include
│ │ ├───lib
│ │ └───sybase
│ ├───pecl
│ │ └───xdebug
│ └───php-5.4.0rc3
├───script
└───share
打开 windows sdk cmd shell,执行:setenv /x86 /xp /release,如果你是64位系统,那么这个命令是必须的,不要试图把参数改成 /x64,否则后续的 make 阶段,你会看到成千上万条 warning …
设定 path:set path=d:\php-sdk\bin;%path%
切换 shell 目录至 d:\php-sdk\php54dev\php-5.4.0rc3>,执行 buildconf 生成 configure 脚本:
d:\php-sdk\php54dev\php-5.4.0rc3>buildconf
rebuilding configure.js
now run 'configure --help'
d:\php-sdk\php54dev\php-5.4.0rc3>
执行 configure 生成 make 脚本,可以查看 configure –help 以获取更多编译选项:
d:\php-sdk\php54dev\php-5.4.0rc3>configure --disable-snapshot-build --disable-debug-pack --disable-ipv6 --disable-zts --disable-isapi --disable-nsapi --without-t1lib --without-mssql --without-pdo-mssql --without-pi3web --without-enchant --enable-com-dotnet --with-mcrypt=static --disable-static-analyze --with-xdebug=shared
这里我使用了 –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-sdk\php54dev\php-5.4.0rc3\release(_ts)
错误处理:
nmake 过程中会产生很多的 warning,只要不中断,那么就无视好了。
关于 calendar.c 和 jewish.c 的编码问题:
ext\calendar\calendar.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
ext\calendar\jewish.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
ext\calendar\jewish.c(324) : error c2001: newline in constant
ext\calendar\jewish.c(325) : error c2001: newline in constant
ext\calendar\jewish.c(326) : error c2001: newline in constant
ext\calendar\jewish.c(327) : error c2001: newline in constant
nmake : fatal error u1077: '"c:\program files (x86)\microsoft visual studio 9.0\vc\bin\cl.exe"' : return code '0x2'
stop.
这两个文件使用的是 ansi 编码,包含有一些西文的特殊字符,gbk 字符集中不存在。
可用 editplus 打开,编码选择:west european (windows),另存为 utf-8。
上一篇: js+php实现静态页面实时调用用户登陆状态的方法
下一篇: 爱占便宜的跑腿
推荐阅读
-
Windows下编译PHP和memcache扩展教程
-
Centos下升级php5.2到php5.4全记录(编译安装)
-
Windows下编译PHP5.4和xdebug全记录
-
在Windows下编译Cef3.2623并加入mp3、mp4支持(附带源码包和最终DLL)
-
Windows下使用VS Code 编译、运行和调试C/C++
-
Centos下升级php5.2到php5.4全记录(编译安装)_php实例
-
Windows下编译PHP和memcache扩展教程
-
Windows下编译PHP5.4和xdebug全记录_PHP
-
linux和Windows下用sublime text3编译运行C,C++
-
Centos下升级php5.2到php5.4全记录(编译安装)_PHP