苏南大叔写的最近的一些文章,都是关于在windows环境下对php内核进行编译的。然而文章写了好多,却还没有描述phpsrc的编译过程。在本篇文章中,苏南大叔就来填这个坑,在windows环境下,对php内核编译的过程。

苏南大叔:windows环境,如何对php内核进行编译?编译的基本步骤 - phpsrc-compile-step
windows环境,如何对php内核进行编译?编译的基本步骤(图7-1)

大家好,这里是苏南大叔的“程序如此灵动”博客,这里讲述苏南大叔和计算机代码的故事。本文讲述,在windows环境下对php@7.4.28内核进行编译的具体过程,编译过程中,究竟会发生什么故事呢?请查看本文的内容。本文测试环境:win10vs2017vc141@19.11phpsrc@7.4.28php-sdk-binary-tools@2.2.1

本文讲述的是在win10环境下编译phpsrc,下面还有个centos环境下,编译phpsrc的文章,仅供参考。
* https://newsn.net/say/phpsrc-compile-centos.html

准备环境

相关代码/工具下载地址:

苏南大叔:windows环境,如何对php内核进行编译?编译的基本步骤 - aka-vs17
windows环境,如何对php内核进行编译?编译的基本步骤(图7-2)

这里要编译的是最新的phpsrc@7.4.28,根据官方文章提示,这个需要vs2017vc15进行编译,所以,这里需要先准备vs2017,这个过程可以参考下面这篇文章:

然后准备了php-sdk-binary-tools,参考文章:

组装目录

根据官方的提示,除了要设置vc15之外,还需要建立相关的文件夹目录结构,用于存放phpsrc@7.4.28。但是,这个目录结构虽然是官方推荐的,但是不按这个走的话,也是可以的。而且苏南大叔认为:按照官方推荐走的话,编译下一个phpsrc内核的话,deps目录是由冲突的。不知道官方是不是也是这么认为的呢?

执行命令:

phpsdk-vc15-x64.bat

第一次初始化,需要执行buildtree,以后就不需要这一步,直接cdphpsrc

phpsdk_buildtree phpdev

phpsrc@7.4.28代码放到新生成的phpdev/vc15/x64/目录下面。路径信息如下所示:

苏南大叔:windows环境,如何对php内核进行编译?编译的基本步骤 - 目录结构1
windows环境,如何对php内核进行编译?编译的基本步骤(图7-3)

切换到phpsrc目录下面,执行命令构建deps工具目录。也是第一次初始化时需要执行,以后不用执行。命令如下:

phpsdk_deps --update

构建内核

此时的执行目录是php-src-PHP-7.4.28目录,如果有要同时编译的pecl扩展,请放到depsphp-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-srcpecl组合,会生成不同的参数组合。下面说几个可能用到的参数,默认是release+ts版本。

nts版本:

--disable-zts

苏南大叔:windows环境,如何对php内核进行编译?编译的基本步骤 - 默认是release-ts
windows环境,如何对php内核进行编译?编译的基本步骤(图7-4)

debug版本:

--enable-debug

苏南大叔:windows环境,如何对php内核进行编译?编译的基本步骤 - debug-nts
windows环境,如何对php内核进行编译?编译的基本步骤(图7-5)

也就是说,要获得debug版本,可能需要执行的命令是:

configure --disable-all --enable-cli --enable-phar --enable-debug

整理

这里获得的release目录,其实还是有些混乱的。如果你再执行install的话:

nmake install

就可以在系统盘下的php目录下面,获得一个整理过的,整洁版的php@7

苏南大叔:windows环境,如何对php内核进行编译?编译的基本步骤 - nmake-install
windows环境,如何对php内核进行编译?编译的基本步骤(图7-6)

苏南大叔:windows环境,如何对php内核进行编译?编译的基本步骤 - nmake-install-2
windows环境,如何对php内核进行编译?编译的基本步骤(图7-7)

如果使用snap命令的话,还可以获得一个超豪华打包版本的多个不同用途的php相关压缩包。(只有一个有用,其它的都没啥用,所以您自己试试吧)。

nmake snap

参考文献

总结

windows版本的php内核编译比其它系统下的内核编译,要复杂的多。不但要安装vs,还要下载php-sdk-binary-tools,更要更新deps工具。这些操作在其它操作系统下,都是不存在的。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。