Windows下编译PHP5.4和xdebug全记录
实际上我最终目的是编译得到支持 PHP5.4 的 php_xdebug.dll,而在此之前,成功编译 PHP5.4 是必须的。 编译环境以及相关软件包:1. 2. 3. 4. 5. 6. 如果你需要的是 VC6 的编译环境,那么你需要安装 Visual C++ 6.0,而 SDK 则需要换成:编译过程:准备好咖啡、可乐,做好准备,可能要折腾数小时… 安装 VC++ 2008 以及 Windows SDK 6.1 建立如下目录: 代码如下:
解压 php-sdk-binary-tools-20110915.zip 中的所有文件至 D:php-sdk
提取 deps-5.4-vc9-x86.7z 中的 deps 目录至 D:php-sdkphp54dev
解压 php5.4 源码至 D:php-sdkphp54dev,目录名任取,比如 php-5.4.0RC3
xdebug 的源码放到 D:php-sdkpeclxdebug
最终的目录结构大概是这样子的: 代码如下: 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-sdkbin;%PATH% 切换 SHELL 目录至 D:php-sdkphp54devphp-5.4.0RC3>,执行 buildconf 生成 configure 脚本: 代码如下: buildconf
Rebuilding configure.js
Now run 'configure --help'
D:php-sdkphp54devphp-5.4.0RC3>
执行 configure 生成 Make 脚本,可以查看 configure –help 以获取更多编译选项:
代码如下: 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-sdkphp54devphp-5.4.0RC3Release(_TS) 错误处理:nmake 过程中会产生很多的 Warning,只要不中断,那么就无视好了。关于 calendar.c 和 jewish.c 的编码问题: 代码如下:
这两个文件使用的是 ANSI 编码,包含有一些西文的特殊字符,GBK 字符集中不存在。
可用 editplus 打开,编码选择:West European (Windows),另存为 UTF-8。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- .net – NAnt和双平台构建 – 在Windows和Mono / Linux上构
- 在真实Windows Server网络中启用WMI的普遍性
- windows-server-2012-r2 – 如何判断上次更改托管服务帐户密
- winapi – win32 CreateFile2 api调用的目的是什么?
- Windows中的线程是否有任何好的初学者教程? C
- 为Windows创建R pacakge -ERROR:包xxx的编译失败
- windows – 在多域林中,当某些(但不是全部)基础架构大师在全
- windows – 无法连接到真实的www.google.com
- 在Windows中,使用命令行,如何检查远程端口是否打开?
- remote-desktop – 在Windows Server 2012中为RDP启用声音
- 修改Windows 10 Universal Applications中每个应
- 在没有cmd.exe弹出窗口的情况下使用popen在Windo
- 在Windows和Linux上构建C
- wpf – App xaml假设实例化的第一个窗口是主窗口
- windows – 为什么套接字connect()到它自己的短暂
- dos – 世界上什么是Zen Simulator?
- windows-phone-8.1 – 升级到最新Windows Phone
- windows-server-2012-r2 – 如何在Windows 2012中
- 更改Windows IP 地址的bat脚本
- windows-server-2008-r2 – 我应该如何拆分这些W