標籤:php xdebug 源碼編譯 apache
網上有很多的php原始碼編譯介紹,但是幾乎沒有xdebug 的源碼編譯的介紹,我這裡結合自己的實際操作來談一下,其中也會涉及到apache原始碼的編譯。
1. php編譯
我們以vs2008來作為編譯工具;其他還需要php的編譯套件,這個可在php官方網下載http://windows.php.net/downloads/php-sdk/,下載這個吧:
php-sdk-binary-tools-20110915.zip
假設把它釋放到e:\php-sdk目錄下
從開始菜單進入command-line模式:
先把vs2008的環境配置好,在命名模式下進入2008的安轉路徑,假設在c:\program files\micorosft visual studio v9.0; 則再次進入該目錄下的vc子目錄:
cd vc
c:\program files\micorosft visual studio v9.0\vc 此時執行vcvarsall.bat
c:\program files\micorosft visual studio v9.0\vc\vcvarsall.bat
這樣2008的執行環境就建立好了。
下一步就是進入到php-sdk目錄下,
e:\php-sdk
執行
bin\phpsdk_setvars.bat
接下來執行:
bin\phpsdk_buildtree.bat phpdev
這下就會在目前的目錄建立一子目錄phpdev,我們把下載回來的php原始碼放入到其子目錄vc9/x86下面,以5.4.73為例子,這樣就會目錄就會是這樣:
e:\php-sdk\phpdev\vc9/x86/php-5.4.37
進入到php-5.4.37目錄,執行
buildconf
這時會產生configure.bat和configure.js 檔案
再次執行:
configure --disable-all --enable-cli
這時候就會產生makefile 檔案,我們就可以用這個檔案進行編譯
直接執行nmake就可以了。
這時候只產生命令列的php執行檔,如果想要架設web,那就需要一個cgi的php執行檔,可在configure 後面加上 --enable-cgi,如下:
configure --disable-all --enable-cli --enable-cgi
有時候我們要需要產生apache能用的module ,就還要加上apache的參數(這裡以apache 2.2為例子):
configure --disable-all --enable-cli --enable-cgi --enable-apache2-2handler
但請注意,這時候需要apache 的sdk(h檔案和lib檔案),官方已提供了2008的對應sdk包,它包含在deps檔案裡面,可在官方下載deps-5.4-vc9-x86檔案。
下載後把它釋放在deps目錄下就可以了。
後註:這個方法也適合vc6來編譯5.3版的php,只是這時候要先安裝2003sdk, 出錯時要手動去更改一下檔案(ext/standard/broscap.c檔案有幾處錯誤);
另外官方不再提供vc6的依賴包,比如編譯apache 的module就過不了,這時只有自己在去編譯apache,把sdk提取出來。
2. xdebug 編譯
前期準備:
需要2003sdk或 6.1 sdk,假設安裝的2003sdk,現通過菜單進入在xp的編譯環境,再用上面的方法把vs2008環境加進來。
要編譯xdebug,需要用到php的sdk, 這個可以從php 的原始碼中產生,只要在上面的環境中再次執行:
nmake install
預設情況下會在c盤產生php目錄,下麵包含一個sdk子目錄,在這個目錄中,我們將看到有一個phpize.bat檔案。
把xdebug原始碼釋放到前面的x86目錄下,假設為2.2.7版,這樣目錄就為xdebug-2.2.7
進入到這個目錄,執行phpize,一般帶全路徑執行:
c:\php\sdk\phpize
這樣會產生3個文檔:configure.bat,configure.js,confi.nice.bat
再次執行
configure --with-xdebug
產生makefile
最後執行
nmake
這樣就在
release_ts目錄下產生了php_xdebug.dll
後註:2.2.7版的xdebug之能在php 5.4.37下編譯成功,但不能在5.3.x 下編譯成功。另外2.1.x的xdebug也不能在php 5.4.37 下正常編譯。
3.apache 編譯
vc6,2003sdk 可以編譯2.2.22版apache,但前提條件是要下載:
apr-1.5.1-win32-src.zip,arp-iconv-1.2.1-win32-src-r2.zip,apr-util-1.5.4-win32-src.zip
解壓它們並把它們放入原始碼srclib目錄下,如果有的就替換掉。
通過2003 sdk 的功能表項目進入到xp,32位環境;
進入到原始碼目錄,執行 :
nmake /f makefile.win
而後執行 :
nmake /f makefilw.win INSTDIR=c:\apache
這時會抱錯,缺少awk執行檔案,但是你發現c:\apache目錄下已經有東西了
把裡面的include 路徑和lib路徑拷貝到php 的deps 相對應路徑下,
deps\include\apache2_2 (包含h檔案)
deps\lib\apache2_2 (包含lib檔案)
這時執行:
configure --disable-all --enable-apache2_2handler
nmake
就可以產生apache 的module了。
windows 上 怎樣編譯 php 和 xdebug的 原始碼