php升级到7.2了 打算开始使用php7.2,但是我经常使用的一个扩展judy 没有官方编译后的版本...所以打算自己编译..
参考文章: http://blog.51cto.com/lancelot/2054953 windows下编译php7.2扩展memcache
1.php7.2采用 vc15(vs2017)编译
2.php7.2的php-sdk dsp 不在以前的页面提供下载了(换地址了)
3.编译环境搭建更加简单一些了.
vs2017把编译器 和 ide 分开了,因为我们只需要编译器所以就不安装vs2017了(直接安装vs2017 免费版也可以)
http://landinghub.visualstudio.com/visual-cpp-build-tools
点击 下载地址 到下载页面 在下面找到 "Visual Studio 2017 生成工具" 下载 安装就可以了(安装的时候注意只需要勾选 只需要vc编译相关工具就可以了)
https://github.com/Microsoft/php-sdk-binary-tools
解压到 d:\php_sdk\ (假设我们准备使用 d:\php_sdk\ 作为编译目录)
这时 d:\php_sdk\ 下面应该有
在 php_sdk 目录 按住 shift 键 右键 点击 "在此处打开命令行窗口"
在命令行窗口运行 "phpsdk-vc15-x86.bat"
注释: 如果想编译 64位版本就运行 x64,
结果如下图(phpsdk目录不太一样)
这时候 d:\php_sdk\ 下面应该会有一个 phpdev 目录
在 d:\php_sdk\phpdev\vc15\x86\ (64位为x64) 下面创建 php-src 目录
下载php源码 解压到 php-src 目录
这时 d:\php_sdk\phpdev\vc15\x86\php-src\ 目录下面应该如下 (目录文件可能不太一样 但是这就是源码的根目录)
命令行 "cd d:\php_sdk\phpdev\vc15\x86\php-src\" 进入 php-src 目录
命令行"phpsdk_deps --update --branch master" php会自动下载 需要的依赖包(以前需要手动下载php-dsp文件)
等待下载完成 (大概如下图)
Processing package zlib-1.2.11-vc15-x64.zip
Processing package libsodium-1.0.15-vc15-x64.zip
Updates performed successfully.
Old dependencies backed up into 'D:\php_sdk\phpdev\vc15\x86\deps.201712260650'.
D:\php_sdk\phpdev\vc15\x86\php-src
$
命令行 执行 "buildconf"
如果提示 没有文件扩展“.js”的脚本引擎
百度 "没有文件扩展“.js”的脚本引擎"
照这个处理 https://blog.csdn.net/ctthuangcheng/article/details/16951361
重新执行 buildconf
结果如下
$ buildconf
Rebuilding configure.js
Now run 'configure --help'
D:\php_sdk\phpdev\vc15\x86\php-src
$
configure --disable-all --enable-cli --enable-zlib --enable-hash --enable-session --without-gd --with-bz2 --enable-fd-setsize=2048 --enable-sanitizer
然后执行"nmake" 开始编译
等待数分钟(或者数10分钟)后,在php-src 目录应该能够找到 Release_TS (或者 Release_NTS 或者 x64\Release_TS ) 这样的目录
如果编译正常的话 这下面会有 php.exe 文件 证明编译php文件成功.
运行编译好的 "php.exe -v"查看是否正常运行
注释:其他命令行 configure 参数
--disable-cgi 编译出 windows 版本和 php-cgi.exe
--disable-zts nts 非线程安全
--enable-shmop=shared 以dll 方式编译 php shmop 扩展
上面php编译成功 意味着 php编译环境搭建完成,现在开始编译 judy扩展
http://pecl.php.net/package/judy 这里是php-judy 官网 但是这个源码好久没有更新了 最高只支持php5.6
https://github.com/esminis/php_pecl_judy 这个是github 上面 有用户升级过的php-judy 测试支持php7.2
根据 php_pecl_judy 的说明按如下步骤编译
到https://sourceforge.net/projects/judy/ 下载 源码
解压到任意目录
然后 在 judy-1.0.5\src\ 中右键 shift 点击 "在此处打开命令行窗口"
运行 "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvars32.bat" 注意路径可能不一样
然后运行 "build"
然后会编译出一个 judy.lib
一.重命名 judy.lib 文件为 "libJudy.lib" 复制到 D:\php_sdk\phpdev\vc15\x86\deps\lib\ 目录下
注释:也有可能是 D:\php_sdk\phpdev\vc15\x86\deps.xxxxxxx\lib\ 文件(看看哪个lib下面有 文件 就拷贝到哪个目录)
二.复制 judy.h 到deps\include 下面(同上 目录可能 为deps.xxxx )
在 ext\judy\ 下面应该有文件
configure --disable-all --enable-cli --enable-zlib --enable-hash --enable-session --without-gd --with-bz2 --with-judy=shared --enable-fd-setsize=2048 --enable-sanitizer
(如果关闭了 需要重新 执行 phpsdk-vc15-x86.bat 然后进入 php-src目录 执行 "build")
然后执行 nmake 然后就可以在 Release_TS 目录看见 php-judy.dll了(编译成功)
注意事项:
如果出现 如果出现 "Unknown option --with-xxxx;" 请重新执行 buildconf
buildconf 会重新根据 扩展目录 "ext" 重新生成 configure.js (也就是说 如果复制了扩展文件到 ext 目录的就需要重新 执行 buildconf )