最近想看看PHP生成的源码是啥样子,于是google半天,终于完成。
环境:VC6.0
源码:php5.2.9源码包(可以去http://www.php.net/下载),解压,我的是解压在D盘根目录下。
Vld源码包(可以去http://pecl.php.net/package/vld/0.9.1下载),解压
生成过程如下:
1、在Windows平台启动 VC++ 6.0, 【文件】(File)->【新建】(New), 在 【工程】(Project)中选择 【Win32 Dynamic-Link Library】, 填写上 【工程名称】(Project Name) 和 【位置】(Location),如图1所示:
2、点击确定后,在第二屏选中 【一个空的DLL工程】(An empty DLL project), 点 【完成】Finish, 完成创建。此时会可能会弹出一个信息框,点击确定。
3、把解压后的vld源码中的vld文件夹下面的所有文件拷贝到到工程所在的目录(D:\php-5.2.9\ext\vld);
4、选择左侧的【Source Files】,点击右键,选择【添加文件到目录】,将D:\php-5.2.9\ext\vld目录下的所有C文件添加到此目录,如图2所示;
5、同样选择【Header Files】,添加所有的头文件到目录。如图3所示:
6、修改工程设置,选择【工程】(Project)->【设置】(Settings)->【C/C++】,在【工程选项】(Project Options:)的 最后加上 /Tc,在预处理程序定义中添加如下宏定义:ZEND_DEBUG=0,COMPILE_DL_VLD,ZTS=1,ZEND_WIN32,PHP_WIN32,HAVE_VLD=1
如果你需要编译其它扩展,请将COMPILE_DL_VLD 和 HAVE_VLD=1,后面的 “VLD” 改成和你要创建的工程名一致。
如图4所示:
7、选择【连接】(Link),在【对象/库模块】(Object/library modules)添加php5ts.lib,注意要以空格格开;
8、选择【工具】(Tools)->【选项】(Options)->【目录】(Directories),
在 【目录】(Show directories for:) 下拉框中选择 “Library files”,在 【路径】(Directories) 中添加 D:\php-5.2.9 (即 php5ts.lib 所在目录);如图5所示:
在【目录】(Show directories for:) 下拉框中选择 “Include files”
在【路径】(Directories)中添加 D:\PHP-5.2.9 (即 ext、regex、win32 所在目录)
在【路径】(Directories)中添加 D:\PHP-5.2.9\MAIN
在【路径】(Directories)中添加D:\PHP-5.2.9\ZEND
在【路径】(Directories)中添加 D:\PHP-5.2.9\TSRM
如图6所示:
9、选择【组建】->【编译】,此时可能会出现报错。
在php_vld.h文件的59行存在三个莫名其妙的点,将他们去掉就可以了。
10、选择【组建】->【组建】。成功!
在扩展下的Debug目录(D:\php-5.2.9\ext\vld\Debug)下有一个生成的dll文件。这就是我们所要的东东了!
文章写得太好了,有图有真相啊。
楼主强人啊。
打算把楼主关于PHP源码分析的文章全部拜读一遍。感谢楼主了
Pingback引用通告: VLD扩展使用指南 | PHP源码阅读,PHP设计模式,PHP学习笔记-胖胖的空间
Pingback引用通告: 附录C VLD扩展使用指南 - yhkyoの程序员修炼之道 – yhkyo.com
Pingback引用通告: PHP-VLD扩展使用指南 | A binary lifestyle ∮ zhoujingk-49
Pingback引用通告: PHP源码学习工具:VLD扩展使用介绍 | 编程语言俱乐部博客