并不是完整的文章或者教学。也不涉及关于使用VC++
在linux或unix下编译,开发extension相信每个认真看过手册的人都会了。但是windows下编译php本身就是一个难题,我至今未能在windows下完整编译php5,总是缺少一些lib。对于windows下编译php5并没有很多的文档,不过手册上已经足够详细了。但是既然仅仅为了编写一个ext就搞出一大堆的东西似乎有些划不来,那就简单一些,只编写ext并编译。
步骤简介
1.取得php代码,比如php-5.1.4。
2.取得windows下的php二进制包,要跟代码同版本。
3.进入原代码目录
php-winext_skel_win32.php --extname=HelloWorld
4.从二进制包中的dev目录取出php5ts.lib,放到刚才执行ext_skel_win32.php产生的php-5.1.4/ext/HelloWorld/
5.编写ext功能代码,可参考精华贴,乔版主那篇unix下开发php4的ext的贴。差不多。
6.在php-5.1.4/ext/HelloWorld/下有HelloWorld.dsp,用VC++打开,编译。在php-5.1.4/Release_TS/
7.如何使用这个ext不多说了。
------------------------------
要点1:一定要安装cygwin,如果cygwin安装路径不是c:/cygwin的话,要手工修改ext_skel_win32.php中的$cygwin_path
比如我的
$cygwin_path= 'Z:/working/bin/cygwin/bin';
要点2:编译ext需要php5ts.lib或php5ts_debug.lib,分别对应Release和Debug方式编译。如果编译时提示php5ts_debug.lib找不到,那么要看看编译方式是什么。
------------------------------
问题1:这样编译的好处是什么?
回答:快!如果不使用php二进制包中编译好的php5ts.lib,而从头在windows下编译php5ts.lib,要配置一个编译环境。麻烦得很,vc自己带得lib缺少很多包,php带的也缺少,要在cygwin里把包都找齐。用dev/php5ts.lib直接编译ext就跳过了编译 php的步骤,可以快速开发ext。同时保证跟官方发布的windows二进制包匹配。
问题2:这样编译跟cygwin下编译有什么区别?
回答:cygwin下编译的php无法脱离cygwin环境,编译的ext自然也无法脱离cygwin。
补充中...还有一些没想到~~
新闻热点
疑难解答