文章关键字 ‘编译’

Windows下编译cURL

2010年10月3日,星期日

准备:

  1. Visual C++ 6.0
  2. Microsoft Platform SDK Febrary 2003
  3. cURL Source Archives

编译:

  1. 解压cURL源码压缩文件
  2. 用Visual C++打开源代码根目录中的vc6curl.dsw
  3. 在菜单栏中选择“Build”
  4. 在下拉菜单中选择“Batch Build”
  5. 单击“Build”按钮
  6. 等待编译完

完成:

  1. 静态和动态的libcurl库都有debug和release版本,分别位于cURL源代码lib子文件夹中的DLL-Debug、DLL-Release、LIB-Debug和LIB-Release文件夹
  2. curl的可执行文件也是按照相同的方式生成,分别使用对应的libcurl库。curl可执行文件分别位于cURL源代码src子文件夹中的DLL-Debug、DLL-Release、LIB-Debug和LIB-Release文件夹
  3. 代码生成的时候使用的是动态的CRT(C Runtime Library)

参考链接:Install — how to install curl

在Windows下源码编译PHP

2010年08月28日,星期六

最近在学习编写PHP拓展,懒得装Linux,就研究了一下在Windows下编译PHP的方法,总算搭建好了在Windows下开发PHP拓展的环境。

1、在C盘新建一个文件夹,C:\PHPDEV

2、从官网下载最新版(我这里用的是5.2.14)的PHP源码,将下tar.gz或tar.bz2压缩包保存到C:\PHPDEV,解压到当前文件夹

3、下载php win32 build extras并保存到C:\PHPDEV,解压到当前文件夹

4、获取编译好的bison.exeflex.exe,保存到桌面或者其他C:\PHPDEV以外的地方。分别打开压缩包并进入bin文件夹,将bison.exe和flex.exe复制到C:\Windows文件夹

5、假定你已经安装了Visual Studio 2008(我个人不推荐用Visual Studio 2008,推荐使用Platform SDK Febrary 2003,官方的编译版本就是用这个PSDK编译的,但是这里用Visual Studio 2008做说明),开始菜单->Microsoft Visual Studio 2008->Visual Studio Tools->Visual Studio 2008 Command Prompt,打开Visual Studio 2008命令提示行

6、用cd命令将目录切换到C:\PHPDEV\php-5.2.14

7、输入buildconf.bat,回车。这个批处理的作用是搜索所有的.w32文件并为你创建configure.js

8、输入下面的命令

cscript /nologo configure.js –without-xml –without-wddx –without-simplexml –without-dom –without-libxml –disable-zlib — without-sqlite –disable-odbc –disable-cgi –enable-cli –enable-debug –without-iconv –disable-ipv6

为什么要disable和without那么多功能呢?因为这些功能需要的库文件并没有包含在PHP的源码包中(不然会很大),这些额外的库文件需要你自己去下载(要找全不是那么容易的)。如果你不禁用这些功能,会出现编译错误。

9、输入nmake,回车

10、第9步中可能会出现文件的编码错误,找到出现错误的文件,用EditPlus选择Western European (Windows)编码打开后另存为utf-8编码,重新nmake即可

11、编译好以后切换到C:\PHPDEV\php-5.2.6\Debug_TS,测试一下

php -r "echo ‘hello,world’;"

参考链接:

Windows下编译支持IPv6的Apache

2010年05月19日,星期三

以前在本机测试BT程序的时候需要支持IPv6的Apache,但是官方网站下载的Windows平台的Apache并不支持IPv6,Google了一下,发现http://win6.jp/上有Apache的IPv6补丁,但是从域名看是小日本的,抵制;后来发现这个论坛上有别人编译好的支持IPv6的Apache,只可惜我不信任别人编译的;在后来看到XAMMP套件的Apache是支持IPv6的,但是XAMMP太大了,我也不喜欢。于是研究了一下怎么在Windows平台下编译支持IPv6的Apache,主要参考了官方的编译教程(英文的),然后自己修改了一下源码,使之能支持IPv6。

废话说完了,正式开始:

  1. 安装Visual Studio 2008,这个,不用介绍了吧
  2. 安装Perl和awk:下载ActivePerl并安装;下载awk95.exe,重命名为awk.exe并复制到C:\Windows目录下
  3. 编译zlib库:到官网下载zlib源码,解压至C:\build\zlib,运行Visual Studio 2008命令行,在zlib目录下运行命令

    nmake -f win32\Makefile.msc

  4. 编译OpenSSL库:到官网下载OpenSSL源码,解压至C:\build\openssl,运行Visual Studio 2008命令行,在openssl目录下运行命令

    perl Configure VC-WIN32
    ms\do_ms
    nmake -f ms\ntdll.mak

  5. 编译Apache:到官网下载Apache源码,解压至C:\build\httpd,复制之前编译好的zlib和OpenSSL的文件夹至httpd\srclib目录下,打开httpd\srclib\apr\include\apr.hw,将

    #define APR_HAVE_IPV6 0

    修改为

    #define APR_HAVE_IPV6 1

    运行Visual Studio 2008命令行,在httpd目录下运行命令

    nmake /F Makefile.win INSTDIR="C:\Apache" installr

    其中INSTDIR为希望安装Apache的目录

喝杯咖啡回来以后,支持IPv6的Apache就编译好了,进入C:\Apache\bin目录,运行

httpd.exe -k install

就可以把Apache注册为系统服务(windows 7下要管理员权限)