zoukankan      html  css  js  c++  java
  • 编译文件编译PHP的windows版本

    改章节是一篇关于编译文件的帖子

        

    下面是在看《Sams.Extending.and.Embedding.PHP》的第4章 编译PHP的一些实践记录,响应中文版 地址 http://www.walu.cc/phpbook/4.1.md,书上关于windows部分的资料和命令是05年的,已很老了下面找到PHP官方关于php在windows下编译的说明停止操纵和记录。php官方windows编译说明: https://wiki.php.net/internals/windows/stepbystepbuild

        


        

    下面没有按照官方的要求安装windows sdk6.1,而是安装的VS2008,启动Visual Studio命令提示(2010)后无法执行下面的语句,
    1. PHP 5.2, 5.3 and 5.4:
      setenv /x86 /xp /release
      
    2. PHP 5.5+:
      setenv /x86 /2008 /release
      

    提示“setenv”命令不存在,直接放弃这个操纵,执行如下操纵设置windows的编译环境,

    1. bin\phpsdk_setvars.bat
      
    2. 以下命令仅仅在第一次建立目录树阶段应用
      bin\phpsdk_buildtree.bat php53dev
      

        然后将php-5.3.17放到绝对的php53dev\vc9\x86\php5.3-xyz路径,如果须要应用第三方库(第三方库包含大多数php扩展应用的依赖库文件),可以从http://wiki.php.net/internals/windows/libs这里的地址找到下载,然后放到D:\phpDev\php53dev\vc9\x86下的“deps”目录里头。进入源码目录,执行buildconf命令建立configure文件,就可以开始类似linux下的编译工作了。

        


        

    cd  d:\phpDev>cd php53dev\vc9\x86\php-5.3.17

        


        

    应用如下编译参数将只会编译--enable-$remains部分的扩展,其他都会被制止掉

        


    configure --disable-all --enable-cli --enable-$remains
    然后执行
    nmake
    
    如果一切顺利,现在就可以在D:\phpDev\php53dev\vc9\x86\php-5.3.17\Release_TS下面找到编译的文件了。

        


        


        

    如果须要增长扩展重新编译,须要下载 http://windows.php.net/downloads/php-sdk/目录下的对应deps-5.3-vc9-x86.7z,并按照目录格式要求放到 D:\phpDev\php53dev\vc9\x86目录下

        


        

    带上enable-debug 会导致编译的结果在Debug_TS下面,同时编译的文件可以通过VC来调试,编译为独立的dll文件须要给每个扩展添加shared参数

        

    下面是修改版的PHP官方windows下的编译参数, 可以编译出大多数的dll并且直接打包成zip文件。

        


        

    configure --enable-cli  --enable-snapshot-build   --enable-debug-pack --without-mssql  --without-pdo-mssql  --without-pi3web  --enable-object-out-dir=../obj/ --enable-com-dotnet=shared --with-mcrypt=static  --disable-static-analyze

        

    然后是nmake clean , nmake 就OK了,编译后的生成文件都在上级目录的obj目录下。

        


        

    下面是对部分configure参数的说明:
        每日一道理
    漫漫人生路,谁都难免会遭遇各种失意或厄运。在凄风苦雨 惨雾愁云的考验面前,一个强者,是不会向命运低头的。风再冷,不会永远不息;雾再浓,不会经久不散。风息雾散,仍是阳光灿烂。
    --enable-snapshot-build       Build a snapshot; turns on everything i and ignores build errors
    建立快照版本,打开全部编译项同时疏忽编译错误
    --enable-one-shot             Optimize for fast build - best for rele  snapshot builders, not so hot for
                                  edit-and-rebuild hacking

    --with-cygwin                 Path to cygwin utilities on your system
    应用cygwin系统工具
    --enable-object-out-dir       Alternate location for binary objects during build
    二进制对象在编译后的目录
    --enable-debug                Compile with debugging symbols
    编译时带调试信息
    --enable-debug-pack           Release binaries with external debug symbols
                                  (--enable-debug must not be specified)

    --disable-zts                 Thread safety
    --with-prefix                 where PHP will be installed
    --with-mp                     Tell VC9+ use up to [n,auto,disable] processes
                                  for compilation
    是否应用多处置器编译
    --with-php-build              Path to where you extracted the development libraries
                                  (http://wiki.php.net/internals/windows/   Assumes that it is a sibling of this so
                                  dir (..\deps) if not specified
    指定在windows下编译php须要的开辟库

    --with-extra-includes         Extra include path to use when building  everything
    编译php时应用的其他包含路径
    --with-extra-libs             Extra library path to use when linking  everything
    链接时应用的其他包含库路径
    --disable-ipv6                Disable IPv6 support (default is turn it on if available)
    --enable-fd-setsize           Set maximum number of sockets for selected(2)
    为selected设置最大数量的socket数量
    --enable-zend-multibyte       Enable Zend multibyte encoding support
    François Laupretre came next, with a fix for href="http://bugs.php.net/42396">bug #42396 in PHP 5.  He wrote that the  configuration option  --enable-zend-multibyte  leads to
    auto-detection of Unicode encoded scripts. This is fine until a script
    contains null bytes following a call to  __HALT_COMPILER() , when
    execution results in ‘ a lot of ‘?’ garbage ‘. Effectively, this renders
    anything using  __HALT_COMPILER()  (read: PHK or phar) incompatible
    with  --enable-zend-multibyte , with the only workaround being the
    unacceptable one of turning off the  detect_unicode  flag.
    François’ patch offered ‘ a small detection loop ‘ to check for a
    sequence of four  0xff  bytes; if found, Unicode detection is
    switched off and the script considered non-Unicode. His idea was that
    deliberately setting the switch would make generated archives compatible with
    the configuration option.
     
    --with-snapshot-template      Path to snapshot builder template dir
    --enable-security-flags       Enable the compiler security flags
    --enable-static-analyze       Enable the VC compiler static analyze
    intel static analyze中应用static analyze 检查安全漏洞
    --with-aolserver              Build AOLserver support
    --enable-apache               Build Apache 1.3.x version of PHP
    --with-apache-includes        Where to find Apache 1.3 headers
    --with-apache-libs            Where to find Apache 1.3 libraries
    --enable-apache2filter        Build Apache 2.x filter
    --enable-apache2-2filter      Build Apache 2.2.x filter
    --enable-apache2handler       Build Apache 2.x handler
    --enable-apache2-2handler     Build Apache 2.2.x handler
    --with-apache-hooks           Build Apache 1.3.x (hooks) version of PHP
    --disable-cgi                 Build CGI version of PHP
    --disable-cli                 Build CLI version of PHP
    --enable-crt-debug            Enable CRT memory dumps for debugging send to STDERR

    检测内存泄漏的重要工具是调试器和 C 运行时库 (CRT) 调试堆函数。若要启用调试堆函数,请在程序中包括以下语句:

    #define _CRTDBG_MAP_ALLOC
    #include <stdlib.h>
    #include <crtdbg.h>
    

    --enable-cli-win32            Build console-less CLI version of PHP
    --enable-embed                Embedded SAPI library
    --enable-isapi                Build ISAPI version of PHP
    --enable-nsapi                Build NSAPI for Netscape/iPlanet/SunONE
                                  webservers
    --with-nsapi-includes         Where to find NSAPI headers
    --with-nsapi-libs             Where to find NSAPI libraries
    --with-pi3web                 Pi3Web
    --disable-bcmath              bc style precision math functions
    --with-bz2                    BZip2
    --disable-calendar            calendar conversion support
    --disable-com-dotnet          COM and .Net support
    --disable-ctype               ctype
    --with-curl                   cURL support
    --with-dba                    DBA support
    Database (dbm-style) Abstraction Layer
     
    --with-enchant                Enchant Support
    Enchant spelling library
    --without-ereg                POSIX extended regular expressions
    --enable-fileinfo             fileinfo support
    --disable-filter              Filter Support
    是否应用flter扩展来处置安全过滤问题

    --disable-ftp                 ftp support
    --without-gd                  Bundled GD support
    --without-t1lib               t1lib support
    --with-gettext                gettext support
    --with-gmp                    Include GNU MP support.
    --disable-hash                enable hash support
    --with-mhash                  mhash support
    --without-iconv               iconv support
    --with-imap                   IMAP Support
    --with-interbase              InterBase support
    --enable-intl                 Enable internationalization support
    应用ICU库供给软件   Unicode 和 Globalization支撑, http://site.icu-project.org/

    --disable-json                JavaScript Object Serialization support
    --with-ldap                   LDAP support
    --enable-mbstring             multibyte string functions
    --enable-mbregex              multibyte regex support
    --disable-mbregex-backtrack   check multibyte regex backtrack
    --with-mcrypt                 mcrypt support
    --with-mssql                  mssql support
    --with-dblib                  mssql support with freetds
    --without-mysqlnd             Mysql Native Client Driver
    --with-oci8                   OCI8 support
    --with-oci8-11g               OCI8 support using Oracle 11g Instant C
    --disable-odbc                ODBC support
    --with-openssl                OpenSSL support
    --with-pgsql                  PostgreSQL support
    --with-pspell                 pspell/aspell (whatever it's called thi
                                  month) support
    --disable-session             session support
    --enable-shmop                shmop support
    --with-snmp                   SNMP support
    --enable-sockets              SOCKETS support
    --with-sqlite3                SQLite 3 support
    --with-config-file-scan-dir   Dir to check for additional php ini fil
    --with-sybase-ct              SYBASE_CT support
    --with-tidy                   TIDY support
    --disable-tokenizer           tokenizer support
    --disable-zip                 ZIP support
    --disable-zlib                ZLIB support
    --without-libxml              LibXML support
    --without-dom                 DOM support
    --enable-exif                 exif
    --with-mysql                  MySQL support
    --with-mysqli                 MySQLi support
    --enable-pdo                  Enable PHP Data Objects support
    --with-pdo-dblib              freetds dblib (Sybase, MS-SQL) support
    --with-pdo-mssql              Native MS-SQL support for PDO
    --with-pdo-firebird           Firebird support for PDO
    --with-pdo-mysql              MySQL support for PDO
    --with-pdo-oci                Oracle OCI support for PDO
    --with-pdo-odbc               ODBC support for PDO
    --with-pdo-pgsql              PostgreSQL support for PDO
    --with-pdo-sqlite             for pdo_sqlite support
    --with-pdo-sqlite-external    for pdo_sqlite support from an external
    --disable-phar                disable phar support
    --enable-phar-native-ssl      enable phar with native OpenSSL support
    --without-simplexml           Simple XML support
    --enable-soap                 SOAP support
    --with-sqlite                 SQLite support
    --without-wddx                WDDX support
    --without-xml                 XML support
    --disable-xmlreader           XMLReader support
    --with-xmlrpc                 XMLRPC-EPI support
    --disable-xmlwriter           XMLWriter support
    --with-xsl                    xsl support
    --enable-com-dotnet=shared   windows 特有扩展支撑,可以应用com和.net库

        

        


        

    编译问题:

        

    d:\phpdev\php53dev\vc9\x86\php-5.3.17\ext\calendar\jewish.c(324) : error C2001:
    常量中有换行符

        

    多行下面的错误,发现php bugs下面已有提交了,也有人说通过editplus来处置字符集问题也不可,后来通过将linux下的UTF-8编码的内容复制过去就可以了,不过文件还是要转换为UTF-8来处置

    文章结束给大家分享下程序员的一些笑话语录: IT业众生相
    第一级:神人,天资过人而又是技术狂热者同时还拥有过人的商业头脑,高瞻远瞩,技术过人,大器也。如丁磊,求伯君。
    第二级:高人,有天赋,技术过人但没有过人的商业头脑,通常此类人不是顶尖黑客就是技术总监之流。
    第三级:牛人,技术精湛,熟悉行业知识,敢于创新,有自己的公司和软件产品。
    第四级:工头,技术精湛,有领导团队的能力,此类人大公司项目经理居多。
    第五级:技术工人,技术精湛,熟悉行业知识但领导能力欠加,此类人大多为系分人员或资深程序员,基本上桀骜不逊,自视清高,不愿于一般技术人员为伍,在论坛上基本以高手面目出现。
    第六级:熟练工人,技术有广度无深度,喜欢钻研但浅尝辄止。此类人大多为老程序员,其中一部分喜欢利用工具去查找网上有漏洞的服务器,干点坏事以获取成绩感。如果心情好,在论坛上他们会回答菜鸟的大部分问题。此级别为软件业苦力的重要组成部分。
    第七级:工人,某些技术较熟练但缺乏深度和广度,此类人大多为程序员级别,经常在论坛上提问偶尔也回答菜鸟的问题。为软件产业苦力的主要组成部分。
    第八级:菜鸟,入门时间不长,在论坛上会反复提问很初级的问题,有一种唐僧的精神。虽然招人烦但基本很可爱。只要认真钻研,一两年后就能升级到上一层。
    第九级:大忽悠,利用中国教育的弊病,顶着一顶高学历的帽子,在小公司里混个软件部经理,设计不行,代码不行,只会胡乱支配下属,拍领导马屁,在领导面前胡吹海侃,把自己打扮成技术高手的模样。把勾心斗角的办公室文化引入技术部门,实在龌龊!
    第十级:驴或傻X,会写SELECT语句就说自己精通ORALCE,连寄存器有几种都不知道就说自己懂汇编,建议全部送到日本当IT产业工人,挣了日本人的钱还严重打击日本的软件业!

  • 相关阅读:
    线程操作共享变量的一点分享。
    C调用栈重温
    8051汇编命令记录。
    没事写个散列玩~
    Ubuntu切换root用户权限
    CEdit自动换行和状态栏添加
    基于原始套接字的嗅探器
    Windows录音API学习笔记
    Windows内存管理
    C语言中tm结构体
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3084644.html
Copyright © 2011-2022 走看看