感謝石頭的鼓勵。前幾天可能是太累了,漏看了最後一個步驟...

2007.01.30 追記:
調整一些說明。換掉 Windows SDK 有兩個因素:
  1. Windows SDK 的檔案太新,編譯時常會出現一堆警告,有時還會編譯失敗,所以我把他的順序放到後面,以 Platform SDk 為主。
  2. 有些 Extensions 有提供 .dsp 的檔案,常會需要用 VCE 來匯入轉檔,所以我乾脆就把 VCE 拿來換掉 Windows SDK。

我的建構平台是 Windows XP SP2(x86),我寫了幾個批次檔來輔助編譯的過程。
編譯所需檔案:

安裝編譯工具時要注意的地方:
  • Platform SDK:建議用預設的選擇。
    • Platform SDK 我安裝到 C:\Program\Microsoft Platform SDK。
  • Windows SDK:如果不編 com-dotnet 的 Extenstion 可不裝,也可用 .NET Framework SDK 取代這個。
    • 若要安裝只需裝 Developer Tools 下的 Windows Vista Headers and Libraries,其他的不用選。
    • Windows SDK 我裝到 C:\Program\Microsoft SDKs。
  • Visual C++ 2005 Express Edition(VCE):只需要安裝 Graphics IDE 即可,其他的不用選。
    • 建議加裝 SP1。
  • 如果你裝到不同的目錄,記得修改輔助批次檔內的 setenv.bat

準備目錄:
  • 先將編譯工具安裝好,然後建立一個目錄作為編譯之用,底下以 D:\Work 作為範例說明。
  • 將 PHP 相關檔案(源碼、win32 buildtools、DNS name resolver、輔助編譯包)解壓縮至 D:\Work 下,目錄會長的像
+--D:\work
| |
| +--bindlib_w32
| | |
| | +--arpa
| | |
| | +--conf
| | |
| | +--...
| |
| +--php-5.x.x
| | |
| | +--build
| | |
| | +--...
| | |
| | +--win32
| | |
| | +--...
| |
| +--win32build
| | |
| | +--bin
| | |
| | +--include
| | |
| | +--lib
| | |
| | +--...
| |
| +--buildtools
| | |
| | +--bin
| | |
| | +--PECL
| |
| +--PECL
| | |
| | +--...
| |

  • 輔助編譯包的說明請看:這裡

編譯流程:
  1. 請切換至純英文環境,再進行編譯:有些源碼檔案內容有些中歐字元,在中文環境下會發生問題,必須切換至英文環境才不會出問題,另外使用 Apploc 來欺騙是行不通的,請切換成英文環境再編譯。
  2. 檢視並修改 env_*.bat 與 php_conf.bat 使其符合你的編譯需求,底下步驟若發生錯誤也請回來修改這兩個檔。
  3. 執行 env_set.bat
  4. 執行 php_conf.bat
  5. 執行 php_make.bat rebuild
  6. 執行 php_make.bat
  7. 執行 php_make.bat install

預設的安裝目錄是在 C:\php5,你可以從這裡拿到編譯好的檔案。
執行時需要 msvcr80.dll ,這個檔案可以在 %windir%\WinSxS\x86_Microsoft.VC80.CRT_xxx 開頭的目錄中找到。
註:%windir%是指你的Windows XP的安裝目錄,預設是 C:\Windows

其他有關 extension 編譯時需要的檔案、要去哪裡找等問題,等我研究清楚後再發表。
不過我發現,網路上有些現成已編好的 lib,有些在編譯過程中無法連結,原因是因為那些 lib 是用 VC6 以前的版本編的,或是非 VC 的編譯器編的,我個人不傾向自己編這些 extension ,不過要找到用 VC7 以後編出來的 lib 有點難度。
創作者介紹

失落的技術

HACGIS 發表在 痞客邦 PIXNET 留言(2) 人氣()


留言列表 (2)

發表留言
  • 遊手好閒的石頭成
  • 問一下,有哪些地方用到 .Net Framework 了?我看好像沒用到。
  • HACGIS
  • 編譯 com-dotnet 時會用到,如果你不編這個的話,可以不用下載 Windows SDK ,可是要另外下載 VC++ 2005 Express ,而且 Platform SDK 也不能只裝 Core 的部份,由於說明起來比較麻煩,所以我決定使用 Windows SDK + Platform SDK 的組合。

    PING:
    TITLE: PHP 在 WIndows XP 下的輔助編譯包 (2007102801 版)
    BLOG NAME: 失落的技術 ::PIXNET BLOG::
    以後輔助編譯包(buildtools.zip)的文件就固定在這裡,有變更會隨時修改。假設編譯的工作目錄在 D:\\Work,那麼請把下列檔案解開到 D:\\Work 下:源碼(php-x.x.x.tar.bz2)win32 buildtools(win32build.zip...

找更多相關文章與討論