并不是完整的文章或者教學。也不涉及關于使用VC++
在linux或unix下編譯,開發extension相信每個認真看過手冊的人都會了。但是windows下編譯php本身就是一個難題,我至今未能在windows下完整編譯php5,總是缺少一些lib。對于windows下編譯php5并沒有很多的文檔,不過手冊上已經足夠詳細了。但是既然僅僅為了編寫一個ext就搞出一大堆的東西似乎有些劃不來,那就簡單一些,只編寫ext并編譯。
步驟簡介
1.取得php代碼,比如php-5.1.4。
2.取得windows下的php二進制包,要跟代碼同版本。
3.進入原代碼目錄
php-winext_skel_win32.php --extname=HelloWorld
4.從二進制包中的dev目錄取出php5ts.lib,放到剛才執行ext_skel_win32.php產生的php-5.1.4/ext/HelloWorld/
5.編寫ext功能代碼,可參考精華貼,喬版主那篇unix下開發php4的ext的貼。差不多。
6.在php-5.1.4/ext/HelloWorld/下有HelloWorld.dsp,用VC++打開,編譯。在php-5.1.4/Release_TS/
7.如何使用這個ext不多說了。
------------------------------
要點1:一定要安裝cygwin,如果cygwin安裝路徑不是c:/cygwin的話,要手工修改ext_skel_win32.php中的$cygwin_path
比如我的
$cygwin_path= 'Z:/working/bin/cygwin/bin';
要點2:編譯ext需要php5ts.lib或php5ts_debug.lib,分別對應Release和Debug方式編譯。如果編譯時提示php5ts_debug.lib找不到,那么要看看編譯方式是什么。
------------------------------
問題1:這樣編譯的好處是什么?
回答:快!如果不使用php二進制包中編譯好的php5ts.lib,而從頭在windows下編譯php5ts.lib,要配置一個編譯環境。麻煩得很,vc自己帶得lib缺少很多包,php帶的也缺少,要在cygwin里把包都找齊。用dev/php5ts.lib直接編譯ext就跳過了編譯 php的步驟,可以快速開發ext。同時保證跟官方發布的windows二進制包匹配。
問題2:這樣編譯跟cygwin下編譯有什么區別?
回答:cygwin下編譯的php無法脫離cygwin環境,編譯的ext自然也無法脫離cygwin。
補充中...還有一些沒想到~~
新聞熱點
疑難解答