`
zhangcs053
  • 浏览: 32563 次
  • 性别: Icon_minigender_1
  • 来自: 徐州
社区版块
存档分类
最新评论

在windows上使用windows sdk编译php源码

    博客分类:
  • php
PHP 
阅读更多
推荐这篇文章:http://vladimirbarbarosh.blogspot.com/2011/05/compile-php-536-pecl-libevent-004.html
为了方便大家阅读,将内容转载给大家,不过还是鼓励去看原创博文。
Compile php-5.3.6 + pecl-libevent-0.0.4 + libevent-2.0.11-stable
Yesterday a friend of mine ask me to compile libevent PHP extension for Windows. It takes me about a whole day to figure out how to do that. Just because it takes so much time I decided to publish how to do that. (To be honest we make it together.)
SOURCES
The following is a list of sources that we will need:
PHP 5.3.6
PECL libevent-0.0.4
libevent-2.0.11-stable
TOOLS
The following is a list of tools that we well need:
Windows SDK for Windows Server 2008 and .NET Framework 3.5
PHP SDK Binary Tools
PHP 5.3 Depencencies (for the minimal PHP they are not necessary)
1. INSTALL WINDOWS SDK
I assume that they will be installed into c:\sdk directory.
2. CREATE C:\PHPSDK DIRECTORY
This is our workplace. I find it much easier to explain, read, and follow how to create it usingpseudo-code rather than words:
mkdir c:\phpsdk
pushd c:\phpsdk
        extract http://windows.php.net/downloads/php-sdk/php-sdk-binary-tools-20110512.zip
        bin\phpsdk_setvars.bat
        bin\phpsdk_buildtree.bat php-5.3.6
        pushd php-5.3.6\vc9\x86
                extract http://md.php.net/distributions/php-5.3.6.tar.bz2
                mv php-5.3.6 src
                extract http://windows.php.net/downloads/php-sdk/deps-5.3-vc9-x86.7z
        popd

        extract http://pecl.php.net/get/libevent-0.0.4.tgz
        rm package.xml
        mv libevent-0.0.4 php_libevent
        pushd php_libevent
                extract http://monkey.org/~provos/libevent-2.0.11-stable.tar.gz
        popd
popd
3. COMPILE MINIMAL PHP
cmd /e:on /v:on
        c:\sdk\bin\setenv.cmd /x86 /xp /release
        c:\phpsdk\bin\phpsdk_setvars.bat
        cd c:\phpsdk\php-5.3.6\vc9\x86\src
        buildconf
        configure --disable-all --enable-cli
        nmake
        rem The following command creates php-5.3.6-devel-VC9-x86
        rem directory which gives us extension developer's header
        rem and .lib files
        nmake snap
4. COMPILE LIBEVENT-2.0.11-STABLE
cmd /e:on /v:on
        c:\sdk\bin\setenv.cmd /x86 /xp /release
        c:\phpsdk\bin\phpsdk_setvars.bat
        cd c:\phpsdk\php_libevent\libevent-2.0.11-stable
        nmake -f Makefile.nmake
5. COMPILE PHP_LIBEVENT.DLL
This was the most trickier part.
cmd /e:on /v:on
        c:\sdk\bin\setenv.cmd /x86 /xp /release
        c:\phpsdk\bin\phpsdk_setvars.bat
        cd c:\phpsdk\php_libevent
        set phpdevdir=c:\phpsdk\php-5.3.6\vc9\x86\src\Release_TS\php-5.3.6-devel-VC9-x86
        set libeventdir=c:\phpsdk\libevent\libevent-2.0.11-stable

        cl libevent.c ^
                /c ^
                /Fophp_libevent.obj ^
                /DZEND_WIN32 ^
                /DPHP_WIN32 ^
                /DWIN32 ^
                /DZTS=1 ^
                /DZEND_DEBUG=0 ^
                /DCOMPILE_DL_LIBEVENT ^
                /I%phpdevdir%\include\Zend ^
                /I%phpdevdir%\include\main ^
                /I%phpdevdir%\include\TSRM ^
                /I%phpdevdir%\include ^
                /I%libeventdir%\WIN32-Code ^
                /I%libeventdir%\include ^
                /I%libeventdir%

        link php_libevent.obj ^
                /DLL ^
                php5ts.lib /LIBPATH:%phpdevdir%\lib ^
                libevent.lib /LIBPATH:%libeventdir% ^
                ws2_32.lib
6. TESTING PHP_LIBEVENT.DLL
cd c:\phpsdk\php-5.3.6\vc9\x86\src\Release_TS\php-5.3.6
copy php.ini-development php.ini
echo extension=c:\phpsdk\php_libevent\php_libevent.dll >> php.ini
php -m
FILES
• php-5.3.6-libevent-ts.zip
• phpsdk-libevent-skeleton.zip (skeleton of our workspace directory)
REFERENCES
• Build your own PHP on Windows
• How do I compile an extension for PHP 5.3 for windows as a DLL?
• Creating a PHP 5 Extension with Visual C++ 2005
• Creating a PHP Extension for Windows using Microsoft Visual C++ 2008
• Compiling PHP for Windows Vista using Visual C++ Express 2008 – Seriously!
分享到:
评论

相关推荐

    vs2015 源码编译 tightvnc-2.8.59-gpl

    vs2015 源码编译 tightvnc-2.8.59-gpl https://www.tightvnc.com/download.php vs2015 可以直接编译 vs2010 需要安装Win8 SDK8.1 然后,在desktop项目的属性里添加上include和lib include:(放在..后面) C:\...

    JAVA上百实例源码以及开源项目源代码

    (1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,...

    FFmpeg-full-SDK-3.2

    压缩包内的“bin”目录中还包含了“ffmpeg.exe”可执行文件,“ffmpeg.exe”是ffmpeg工程中的一个项目,主要用于视频文件的转换、截图等操作,是一款非常强大的应用程序,在ffmpeg的工程中可以找到它的源代码。...

    jd-open-api-sdk-src:京东开放API的SDK原始码

    京东云开放API的SDK原始码为了深入了解京东开放平台提供的SDK ,我将他们提供的SDK反编译后,重新整理了一份SDK的源码。获得了源码后,首先我意识到的是这个SDK实现比较简单,主要功能就是将Java对象编码为JSON处理...

    JAVA上百实例源码以及开源项目

    (1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,...

    GNU libiconv-1.15和libintl-0.19.8.1,VS2017工程和 Makefile.mak 命令行编译文件

    如果您下载并使用了本代码,将其包含在您发布的应用中,给您带来了经济上,心理上,生活上的损失,本人不负有责任。 所有代码都基于官网进行修改,iconv的代码来源于libiconv-1.15的lib目录,intl的代码来源于...

    易语言-PHP调用易语言2

    这个工具是微软提供的,在VC6中和Windows SDK中都有 找到要用的COM组件,比如说VBSrcirpt的正则表达式COM组件在: Type Libaray中的Microsoft VBScript Regular Expression V5.5中,双击打开后,保存成idl文件 然后用微软...

    Awesomium 1.08 源码

    Awesonmium 是一个允许把网页嵌入到 3D ...需要配合谷歌的Chrome浏览器内核,这个版本的代码我自己也没有编译过,只是留着做个备份。不想浪费分数的可以用Git下载:git clone git://github.com/pathorn/awesomium.git

    深入浅出Hibernate源码

    在工程的类路径配置中,使用上一步创建的用户库(step1-step3使用Hibernate2,step4使用hibernate3)。确保没有编译错误。 好了,您现在可以开始阅读代码,作一些自己的改变,看看您能得到什么结果 :) 中文处理说明 ----...

    基于DCT算法的水印嵌入和提取的移动智能终端数字图像证据系统Android APP源码(水印包括二维码和图片两种).zip

    * App中实时定位使用[百度定位SDK](http://lbsyun.baidu.com/index.php?title=android-locsdk)完成,重新调试编译时请根据[这里](http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/key)申请AK,然后...

    java开源包8

    JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor ...

    开源企业IM-恩布entboost r172

    entboost是跨平台、跨应用的实时通讯开放平台,今天发布第一个开源版本(r172beta),主要功能支持文本、表情,图片,文件共享,语音视频,云盘,群组,离线消息等功能,开放客户端源码,支持PC SDK API,REST API等...

    【2014.11.15】易语言编写支持库模版,动、静态版-易语言

    [+]增加静态库转换工具, 在随本模版的压缩包内(源码) !!! [+]增加 类_写易库.设置_静态库模式() 方法, 用于指定静态库的导出函数名 !!! [-]对 类_写易库.添加命令() 做了改动,主要修改链接名 !!! [-]修复...

    安卓(Android)语音合成Demo源码

    包含两款支持安卓(Android)离线语音合成(朗读)的演示App源码,支持变声,变音高和语速...最新SDK及Demo源码请从http://www.tangsci.cn/download.php下载,持续更新。技术支持qq:397254588,有问题的话别客气,加我qq。

    【原创】新版发布 nge2 PSP新版类库

    libnge2采用LGPL发布源代码。使用本库建议加上nge2的logo,见图片 画图性能:单张图片 图片 效率 512*512*16 450fps 512*512*32 250fps 特点: 1 支持16位(RGBA5650 RGBA5551 RGBA4444)/32位(RGBA_8888)显示。...

    Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好

    Qt Creator 编译的程序,在其工程文件夹下会有一个debug 文件夹,其中有程序的.exe 可执行文件。但Qt Creator 默认是用动态链接的, 就是可执行程序在运行时需要相应的.dll 文件。我们点击生成的.exe 文件,首 先...

    java开源包10

    JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor ...

    java开源包1

    JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor ...

    java开源包11

    JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor ...

Global site tag (gtag.js) - Google Analytics