下载VC2012,安装
打开CMD 须运行 vcvars32.bat (初始化VC编译环境)
下载PHP WIN编译包:http://windows.php.net/downloads/php-sdk/
下载:
php-sdk-binary-tools-20110915.zip
解压,CMD进入该目录,运行
bin\phpsdk_setvars.bat
bin\phpsdk_buildtree.bat php5dev
会在当前目录下生成 php5dev 文件夹
根据你的VC版本,需要编译版本,进入 php5dev/vc*/x**/
会有 deps 文件夹,根据PHP版本下载:
deps-5.*-vc11-x86.7z
解压把压缩包里的deps内容放入当前文件夹的deps目录中
根据PHP版本下载PHP源码:http://php.net/downloads.php
下载php-5.*.*.tar.gz 解压到当前目录:php5dev/vc*/x**/
进入php源码目录执行:
#生成configure文件
buildconf
#生成Makefile文件
configure --enable-**
#根据需求添加指定扩展
#如果需要把扩展编译成DLL,编译参数为:
--enable-**=shared
#执行编译
nmake
编译出来的文件在 Release_TS
只编译指定扩展可以使用 configure --disable-all --enable-cli --enable-***=shared
一般出现php5ts.dll.def : error LNK2001: 无法解析的外部符号 ** 表示依赖的外部库没找到
使用外部库:
在执行了 configure 后会在源码目录生成 Makefile 文件,修改该文件
1. 添加库目录:
LDFLAGS=/nologo /libpath:"E:\php\phpsdk\php55dev\vc9\x86\deps\lib" /libpath:"你的库LIB目录"
2. 添加头文件
CFLAGS=/nologo /FD ...(略) /I "你的include头文件目录" /D FD_SETSIZE=256
3. 指定库
LIBS=kernel32.lib ...(略) 你的库.lib
编译你的扩展
在PHP源码目录 ext 添加扩展
在WIN下编译扩展的配置文件为:config.w32 必须要有该文件 非 config.m4
config.w32 文件注解
#表示编译参数,同时会有 PHP_TEST 变量 如果第三个参数为 yes 表示默认编译
ARG_ENABLE("test", "for php_test support", "no");
#一般会有这个判断 表示要编译才添加编译扩展
if (PHP_TEST == "yes") {
#参数1 编译名
#参数2 所有的C文件
#参数3 null 表示共享编译 true 表示编译进PHP
EXTENSION("screw", "**.c **.h /*你的C文件*/", null);
}