php WIN下编译注意问题

下载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);
    }

php WIN下编译注意问题

上一篇:windows Server 2008 R2 开关机取消登录时要按Ctrl+Alt+Delete组合键登录的方法


下一篇:samba 软连接没法复制到windows