標籤:http io 使用 ar for 檔案 sp 問題 log
下載VC2012,安裝
開啟CMD 須運行 vcvars32.bat (初始化VC編譯環境)
下載PHP WIN編譯包:http://windows.php.net/downloads/php-sdk/
下載:
php-sdk-binary-tools-20110915.zip
解壓,CMD進入該目錄,運行
bin\phpsdk_setvars.bat
bin\phpsdk_buildtree.bat php5dev
會在目前的目錄下產生 php5dev 檔案夾
根據你的VC版本,需要編譯版本,進入 php5dev/vc*/x**/
會有 deps 檔案夾,根據PHP版本下載:
deps-5.*-vc11-x86.7z
解壓把壓縮包裡的deps內容放入當前檔案夾的deps目錄中
根據PHP版本下載PHP源碼:http://php.net/downloads.php
下載php-5.*.*.tar.gz 解壓到目前的目錄:php5dev/vc*/x**/
進入php源碼目錄執行:
#產生configure檔案
buildconf
#產生Makefile檔案
configure --enable-**
#根據需求添加指定擴充
#如果需要把擴充編譯成DLL,編譯參數為:
--enable-**=shared
#執行編譯
nmake
編譯出來的檔案在 Release_TS
只編譯指定擴充可以使用 configure --disable-all --enable-cli --enable-***=shared
一般出現php5ts.dll.def : error LNK2001: 無法解析的外部符號 ** 表示依賴的外部庫沒找到
使用外部庫:
在執行了 configure 後會在源碼目錄產生 Makefile 檔案,修改該檔案
1. 添加庫目錄:
LDFLAGS=/nologo /libpath:"E:\php\phpsdk\php55dev\vc9\x86\deps\lib" /libpath:"你的庫LIB目錄"
2. 添加標頭檔
CFLAGS=/nologo /FD ...(略) /I "你的include標頭檔目錄" /D FD_SETSIZE=256
3. 指定庫
LIBS=kernel32.lib ...(略) 你的庫.lib
編譯你的擴充
在PHP源碼目錄 ext 添加擴充
在WIN下編譯擴充的設定檔為:config.w32 必須要有該檔案 非 config.m4
config.w32 檔案註解
#表示編譯參數,同時會有 PHP_TEST 變數 如果第三個參數為 yes 表示預設編譯
ARG_ENABLE("test", "for php_test support", "no");
#一般會有這個判斷 表示要編譯才添加編譯擴充
if (PHP_TEST == "yes") {
#參數1 編譯名
#參數2 所有的C檔案
#參數3 null 表示共用編譯 true 表示編譯進PHP
EXTENSION("screw", "**.c **.h /*你的C檔案*/", null);
}
php WIN下編譯註意問題