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

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 有點難度。
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 HACGIS 的頭像
    HACGIS

    失落的技術

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