编译前的准备

从一个PHP程序猿,到一个想为PHP开发扩展的程序猿,此间的进化有一步是跳不过去的,那就是你必须熟知如何编译PHP的源码。

*nix Tools

C语言的编译器是我们使用C语言的必备工具,你的系统应该已经自带了一种C语言的编译器,而且它极有可能是大名鼎鼎的GCC。通过检测你本机gcc或者cc程序的版本,可以很方便的知道你机器上是否已经安装的某种C语言的编译器。

walu@walu-ThinkPad-Edge:~$ gcc --version

gcc (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2

Copyright (C) 2010 Free Software Foundation, Inc.

This is free software; see the source for copying conditions. There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

如果你还没有安装编译器,那你需要安装一个。最简单的办法便是去下载一个与你系统相符的rpm或者deb包,当然你也可以通过以下命令的一种来方便的安装:yum install gcc, apt-get install gcc, pkg-add -r gcc, 或者 emerge gcc.

除了编译器,你还需要以下程序:make, autoconf, automake, 和libtool。说实话,我连autoconf现在是啥还不知道(截至到现在,2011年9月6号),不过除非RP太低,一般系统中都会自备了,而且phpize程序会把这些需要的脚本给生成好的。

对于编译需要的程序以及它们的版本我们可以在PHP官网找到最新的答案:

autoconf: 2.13 (2.59+ for PHP 5.4+)

automake: 1.4+

libtool: 1.4.x+ (except 1.4.2)

bison: 1.28, 1.35, 1.75, 2.0 or higher

flex (PHP 5.2 and earlier): 2.5.4 (not higher)

re2c: 0.13.4+

你千万不要被上面的清单给吓着,其实系统应该给装备好了,除非真RP低,那你出门去买张彩票吧... ...

当然,我们也可以通过SVN从PHP源码库里导出一份源码,需要注意的是,PHP的svn源码库地址是https协议的。官方推荐我们直接签出它的php-src目录:

$ svn checkout https://svn.php.net/repository/php/php-src --depth immediates php-src

$ cd php-src

当然,我们也可以签出特定的版本:

PHP 5.3: svn checkout https://svn.php.net/repository/php/php-src/branches/PHP_5_3 php-src-5.3

PHP 5.4: svn checkout https://svn.php.net/repository/php/php-src/branches/PHP_5_4 php-src-5.4

PHP HEAD: svn checkout https://svn.php.net/repository/php/php-src/trunk php-src-trunk

Win32 Tools

这里仅代表作者05年的观点,我还没有在win平台下测试过,稍後会把这段修正过来。

The Win32/PHP5 build system is a complete rewrite and represents a significant leap forward from the PHP4 build system. Instructions for compiling PHP4 under Windows are available on php.net, only the PHP5 build systemwhich requires Windows 2000, Windows 2003, or Windows XPwill be discussed here.

First, you'll need to grab libraries and development headers used by many of the core PHP extensions. Fortunately, many of these files are redistributed from php.net as a single .zip file located at http://www.php.net/extra/win32build.zip.

Create a new directory named C:\PHPDEV\ and unzip win32build.zip using your favorite zip management program into this location. The folder structure contained in the zip file will create a subdirectory, C:\PHPDEV\win32build, which will contain further subfolders and files. It's not necessary to name your root folder PHPDEV; the only important thing is that win32build and the PHP source tree are both children of the same parent folder.

Next you'll need a compiler. If you've already got Visual C++ .NET you have what you need; otherwise, download Visual C++ Express from Microsoft at http://lab.msdn.microsoft.com/express/.

The installer, once you've downloaded and run it, will display the usual welcome, EULA (End-User License Agreement), and identification dialogs. Read through these screens and proceed using the Next buttons after you've agreed to the terms of the EULA and entered any appropriate information.

Installation location is of course up to you, and a typical installation will work just fine. If you'd like to create a leaner installation, you may deselect the three optional componentsGUI, MSDN, and SQL Server.

The final package is the Platform SDK, also available for download from Microsoft at http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5. The site currently lists three download options: PSDK-x86.exe, PSDK-ia64.exe, and PSDK-amd64.exe. These options refer to x86 compatible 32bit, Intel64bit, and AMD64bit processors respectively. If you're not sure which one applies to your processor, select PSDK-x86.exe, which should work cleanly, albeit less efficiently, with both 64 bit variants.

As before, proceed through the first few screens as you would with any other installer package until you are prompted to select between Typical and Custom installation. A Typical installation includes the Core SDK package, which is sufficient for the purposes of building PHP. Other packages can be deselected by choosing a Custom installation, but if you have the hard disk space to spare, you might as well install it all. The other packages may come in handy later on.

So unless you're byte conscious, select Typical and proceed through the next couple of standard issue screens until the installer begins copying and registering files. This process should take a few minutes so grab some popcorn.

Once installation is complete you'll have a new item on your Start menuMicrosoft Platform SDK for Windows Server 2003 SP1.

获取PHP源码

其实你有很多办法安装PHP,最简单的一种就是从你系统的库或者源里通过apt-get、yum install之类的命令直接安装PHP5,这样做的好处你的系统可能会自动处理一些php在它上面的工作时的一些bug,而且你还可以方便的升级与卸载。这样做也有缺点,那就是你的PHP版本永远无法是最新的,通常www.php.net发布数周甚至数月后你才能用上相应的版本。

第二种方法:也是推荐使用的一种方法,那就是自行下载php-x.y.z.tar.gz的源码包,然后自行编译安装。这种包一般都是经过了海量的测试后才发布的,而且非常接近最新beta或者alpha版本。

此外,你还可以snaps.php.net提供的快照包来下载php进行编译安装,这个站点每几个小时便会从源码库里打包出一份新的PHP。不过从这取得的包可能会因为某个未经完整测试的代码提交而使PHP工作不正常。但是如果你想研究下PHP6.0的进展,这里绝对是你方便获取它的地方。

最后,你可以直接从版本库中导出此时此刻的源码。作为一个扩展开发者,从版本库或者snaps中获取php看起来并没有多大的作用,但是如果我们要将这个扩展推送到版本库中时,便需要熟练的掌握checkout和checkin的步骤了。签出的地址在上面已经说过了。

asurerp可以导出php文件吗,编译前的准备 - PHP 扩展开发及内核应用相关内容 - UDN开源文档...相关推荐

  1. linux文档内容的查阅,文件内容查阅 - 一步一步学 Linux - UDN开源文档

    文件内容查阅 cat:由第一行开始显示文件内容 tac:由最后一行开始显示文件内容 nl:显示的时候,顺便输出行号 more:一页一页的显示文件内容 less:与 more 类似,但是它可以往前翻页 ...

  2. 在html文件中集成easy,easyapi 通过java注解或注释自动生成带页面的接口文档

    Java-自动生成带页面可调试的接口文档 介绍:一款java接口文档自动生成的插件,包含了根据接口注释或注解自动生成接口文档,可网页打开. 特点:一款无任何代码侵入的生成方式,10秒钟集成 1.支持读 ...

  3. 【操作word】Java + POI导出富文本的内容到word文档

    这周工作中,遇到一个需求是需要将数据库中富文本内容导出到word文档里面,于是就采用POI技术实现了一下导出word文档的功能.(word文档是识别html内容的,所以富文本内容也自然能够识别.) 一 ...

  4. 全能代码生成器,自动生成前后端代码、生成项目框架、生成JavaBean、生成数据库文档、自动化部署项目(TableGo v8.0.0)

    TableGo_20220801 v8.0.0 正式版发布,此次版本累计更新如下:  1.生成项目功能新增支持若依框架,可同时生成若依框架代码和所有业务表的前后端基础CRUD代码,一键搞定所有  2. ...

  5. 苹果手机html转pdf文件怎么打开吗,今天才知道,苹果手机打开这个功能,可以将纸质文档转为Word...

    很多人都会选择苹果手机,如果你只会用来打游戏,那就太浪费了,在苹果手机上有一个非常厉害的功能,可以将纸质文档转换为Word,下面一起来看看吧. 一.提取电子文档 1.苹果手机上都会自带一个[备忘录], ...

  6. 将mysql 导出word文档_将数据库的内容生成WORD文档

    毕业设计需要从库里取纪录生成word文档,我找了半天,主要有这么几种方法: 1.改头,就是象excel似的Response.Buffer = TRUE Response.ContentType = & ...

  7. Java poi导出带html标签内容的word文档

    public static void exportWord(HttpServletResponse response, String content, String fileName) throws ...

  8. 文档计算机无法分页,同一EXCEL文件在不同计算机上显示分页不同解决办法(6页)-原创力文档...

    同一EXCEL文件在不同计算机上显示分页不同解决办法.DOC 同一EXCEL文件在不同计算机上显示分页不同解决办法 真正原因 (一)根本原因:电脑的dpi不同. (二)名词解释,dpi(dots pe ...

  9. 计算机用户在使用计算机文件时6,201606-计算机基础选择题(含答案)(6页)-原创力文档...

    201606 D0179.信息科学的主要研究对象是( ).P3 A.通讯技术 B.算法 C.计算机技术 D.信息 A0180.信息论的创始人是( ).P1 A.香农 B.维纳 C.冯·诺依曼 D.爱因 ...

最新文章

  1. C读取配置文件,然后写入结构体的方法
  2. zoj 1438 - Asteroids!
  3. 【知识图谱】知识表示与知识建模
  4. Netty 框架学习(二):DelimiterBasedFrameDecoder和FixedLengthFrameDecoder
  5. [Unity] 3D数学基础 - 坐标系、向量、矩阵
  6. P2053-修车【网络流,费用流】
  7. (经典实用五大排序)选择排序,计数排序,冒泡排序,快速排序,插入排序
  8. 用CMake编译lua
  9. 每日一道剑指offer-反转链表
  10. 3GPP规范命名规则解读
  11. halcon识别斜着的车牌
  12. atx20pin电源短接_ATX电源20针及24针接口定义
  13. 如何学习平面设计色彩搭配原理
  14. 计算机多核启动原理,多核cpu工作原理 不进来看看?
  15. 如何在 Windows 中快速查找文档
  16. python爬虫菜鸟教程-Python数据分析,学习路径拆解及资源推荐
  17. bat 脚本修改IE浏览器代理服务器
  18. commit your changes or stash them before you can merge 解决方法
  19. 吃透Chisel语言.29.Chisel进阶之通信状态机(一)——通信状态机:以闪光灯为例
  20. 王姨劝我学HarmonyOS鸿蒙2.0系列教程之五布局方法点击响应!

热门文章

  1. matlab——图像细化
  2. 输入一个十进制数,转化为二进制
  3. 数据安全架构设计与实战~如何加密结构化数据
  4. 如何阅读一本书~阅读的层次
  5. Guava RateLimiter限流原理解析
  6. python组合数据分类_Python解决数据样本类别分布不均衡问题
  7. 就业技术书文件表格_429页标准指南,教你如何管理工程监理文件资料,丰富图表一看就会...
  8. 伦巴时间步的动作要领_军训动作要领已到,请签收
  9. JAVA进阶开发之(二维数组)
  10. Linux命令终端提示符显示-bash-4.2#解决方法【转载】