前幾天需要在 Windows 上安裝 php-zmq 擴充套件, 奈何尋遍網路找不到為 PHP 7.4 編譯好的 DLL, 只好自行編譯.
編譯過程參考了 Build your own PHP on Windows^1 和 How to build PHP Extension on Windows^2.
準備工作
- 首先需要安裝 Visual C++ Build Tools 2017.
從 https://aka.ms/vs/15/release/vs_buildtools.exe
下載安裝檔案.
執行下面的指令進行安裝.
1
| > .\vs_buildtools.exe --quiet --wait --norestart --nocache --installPath C:\BuildTools --add Microsoft.VisualStudio.Workload.VCTools
|
上述指令系自動安裝, 不會顯示任何視窗, 如需瞭解安裝進度可將 --quiet 刪掉
- 下載 PHP-SDK 並解壓縮, 目錄結構如下.
1 2 3 4 5 6
| php-sdk |-bin |-lib |-msys2 |-pgo ...
|
- 準備 SDK
1 2
| > .\phpsdk-starter.bat -c vc15 -a x64 $ phpsdk_buildtree php-dev
|
- 下載 PHP 程式碼 並解壓縮, 目錄結構如下.
1 2 3 4
| php-sdk |-vc15 |-x64 |-php-7.4.4-src
|
- 準備程式庫
1 2 3 4
| $ cd vc15\x64\php-7.4.4-src $ phpsdk_deps -u ... Updates performed successfully.
|
- 編譯 PHP
1 2 3 4 5 6
| $ buildconf $ configure --disable-all --enable-cli $ configure --disable-all --enable-cli --disable-zts ... Type ‘nmake’ to build PHP $ nmake
|
編譯擴充套件
- 下載 PHP-ZMQ 程式碼 並解壓縮, 目錄結構如下.
1 2 3 4 5 6 7 8 9
| php-sdk |-vc15 |-x64 |-php-7.4.4-src |-ext |-zmq |-config.m4 |-config.w32 ...
|
- 下載 ZeroMQ 程式碼 和 ZeroMQ Visual Studio 15 2017 x64 並解壓縮, 目錄結構如下.
1 2 3 4 5 6 7 8 9 10
| php-sdk |-vc15 |-x64 |-deps |-bin |-libzmq-v141-mt-4_3_2.dll |-include |-zmq.h |-lib |-libzmq.lib <- libzmq-v141-mt-4_3_2.lib
|
- 編譯 PHP-ZMQ
1 2 3 4 5 6 7
| $ nmake clean $ buildconf --force $ configure --disable-all --enable-cli --with-zmq=shared $ configure --disable-all --enable-cli --with-zmq=shared --disable-zts ... Type ‘nmake’ to build PHP $ nmake
|
編譯成功的 php_zmq.dll
在:
1 2
| php-sdk\php-dev\vc15\x64\php-7.4.4-src\x64\Release_TS\php_zmq.dll php-sdk\php-dev\vc15\x64\php-7.4.4-src\x64\Release\php_zmq.dll
|
編譯成果在 zeromq/php-zmq#193
使用擴充套件
將 php_zmq.dll
放到 php/ext
, 將 libzmq-v141-mt-4_3_2.dll
放到 php
, 然後在 php.ini
新增: