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

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 的頭像
HACGIS

失落的技術

HACGIS 發表在 痞客邦 留言(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...