windows环境,如何对php内核进行编译?编译的基本步骤
发布于 作者:苏南大叔 来源:程序如此灵动~苏南大叔写的最近的一些文章,都是关于在windows
环境下对php
内核进行编译的。然而文章写了好多,却还没有描述phpsrc
的编译过程。在本篇文章中,苏南大叔就来填这个坑,在windows
环境下,对php
内核编译的过程。
大家好,这里是苏南大叔的“程序如此灵动”博客,这里讲述苏南大叔和计算机代码的故事。本文讲述,在windows
环境下对php@7.4.28
内核进行编译的具体过程,编译过程中,究竟会发生什么故事呢?请查看本文的内容。本文测试环境:win10
,vs2017
,vc141@19.11
,phpsrc@7.4.28
,php-sdk-binary-tools@2.2.1
。
本文讲述的是在
win10
环境下编译phpsrc
,在centos
环境下编译phpsrc
的文章,请参考:
准备环境
相关代码/工具下载地址:
- https://visualstudio.microsoft.com/zh-hans/vs/
- https://github.com/php/php-sdk-binary-tools
- https://github.com/php/php-src/tree/PHP-7.4.28
这里要编译的是最新的phpsrc@7.4.28
,根据官方文章提示,这个需要vs2017
的vc15
进行编译,所以,这里需要先准备vs2017
,这个过程可以参考下面这篇文章:
然后还需要准备php-sdk-binary-tools
,参考文章:
组装目录
根据官方的提示,除了要设置vc15
之外,还需要建立相关的文件夹目录结构,用于存放phpsrc@7.4.28
。但是,这个目录结构虽然是官方推荐的,但是不按这个走的话,也是可以的。而且苏南大叔认为:按照官方推荐走的话,编译下一个不同版本的phpsrc
内核的话,deps
目录是有冲突的。不知道官方是不是也是这么认为的呢?
执行命令:
phpsdk-vc15-x64.bat
第一次初始化,需要执行buildtree
,以后就不需要这一步,直接cd
到phpsrc
。
phpsdk_buildtree phpdev
把phpsrc@7.4.28
代码放到新生成的phpdev/vc15/x64/
目录下面。路径信息如下所示:
切换到phpsrc
目录下面,执行命令构建deps
工具目录。也是第一次初始化时需要执行,以后不用执行。命令如下:
phpsdk_deps --update
构建内核
此时的执行目录是php-src-PHP-7.4.28
目录,如果有要同时编译的pecl
扩展,请放到deps
和php-src-PHP-7.4.28
的同级目录。但是,本文中暂时不考虑这样的情况,仅仅是编译单纯的php-src-PHP-7.4.28
内核。
nmake clean
buildconf.bat
configure --disable-all --enable-cli --enable-phar
nmake
注意在非首次构建的时候,一定要注意nmake clean
,这个道理大家都懂得。
configure
参数
configure
的参数,请仔细考虑。请使用--help
选择你需要的参数,不同的php-src
和pecl
组合,会生成不同的参数组合。下面说几个可能用到的参数,默认是release
+ts
版本。
nts
版本:
--disable-zts
debug
版本:
--enable-debug
也就是说,要获得debug
版本,可能需要执行的命令是:
configure --disable-all --enable-cli --enable-phar --enable-debug
整理
这里获得的release
目录,其实还是有些混乱的。如果你再执行install
的话:
nmake install
就可以在系统盘下的php
目录下面,获得一个整理过的整洁版php@7
。
如果使用snap
命令的话,还可以获得一个超豪华打包版本的多个不同用途的php
相关压缩包。(只有一个有用,其它的都没啥用,所以您自己试试吧)。
nmake snap
参考文献
- https://newsn.net/say/vs2017-vc-toolset.html
- https://newsn.net/say/phpsrc-compile-centos.html
- https://newsn.net/say/centos-phpsrc.html
总结
windows
版本的php
内核编译比其它系统下的内核编译,要复杂的多。不但要安装vs
,还要下载php-sdk-binary-tools
,更要更新deps
工具。这些操作在其它操作系统下,都是不存在的。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。