必備軟體
- python : 可以到這裡下載「 http://www.python.org/getit/」。
- 我是使用 2.7.3版本,注意一定要使用與 scons 相同位元的版本,因為目前 scons 只有 32位元的版本,所以python 也要選擇 32 位元的版本,否則在安裝 scons 時,它在 registry 會找不到正確 python 路徑。
- scons: http://sourceforge.net/projects/scons/files/scons/
- scons 是編譯用的軟體,可以下載 2.1.0 版本 「scons-2.1.0.win32.exe」
- visual studio 2008
- windows SDK 6.0A
- v8 engine : http://v8.googlecode.com/svn/trunk/
- 使用 svn 下載 。
v8 engine 使用一般的安裝方式
在 windows 編譯 c 語言,使用命令提示字元,在開始->執行->輸入「cmd」,找到 cmd 後,按右鍵,使用 Administrator 管理員身分執行程式。
在執行編譯之前,首先要加入 Python 與 scons 的指令路徑,如果你直接在 cmd 中輸入 scons or python,會得到下列的錯誤訊息「 xx is not recognized as an internal or external command」
set PATH = C:\Python27_32;C:\Python27_32\Scripts;%PATH%
set PATH = C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin;%PATH%
將下載回來的 v8 trunk中的 SConstruct 第 341 行的 「/WX」 刪除,/WX 會使得 visual studio 編譯的時候,將 warning 當成是 error 來處理,移除後就可以正常編譯了。
- 'all': {
- 'WARNINGFLAGS': ['/W3', '/WX', '/wd4351', '/wd4355', '/wd4800']
- },
- 'all': {
- 'WARNINGFLAGS': ['/W3', '/wd4351', '/wd4355', '/wd4800']
- },
接著執行 compile 的指令, scons env 中的 visual studio 路徑要依照不同的版本而修改。
- compile 方式 1
- "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"
- scons env="PATH:%PATH%,INCLUDE:%INCLUDE%,LIB:%LIB%" library=shared mode=release snapshot=on
- compile 方式 2
- scons env="PATH:C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE;C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools,INCLUDE:C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include;C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\Include;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include,LIB;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib;C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\Lib;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib" mode=release library=shared snapshot=on
使用 GYP +cygwin 安裝
- 登入 cygwin , 下載 v8 truck
- svn checkout http://v8.googlecode.com/svn/trunk/ v8
- cd v8
- 下載 gyp 到 v8 truck目錄
- svn co http://gyp.googlecode.com/svn/trunk build/gyp
- svn co http://src.chromium.org/svn/trunk/deps/third_party/cygwin@66844 third_party/cygwin
- 執行 gyp_v8 : python build/gyp_v8
- /cygdrive/c/"Program Files (x86)"/"Microsoft Visual Studio 9.0"/Common7/IDE/devenv.com /build Release build/All.sln
這個流程可以正確的編譯 v8 ,不過在我的系統中會出現 warning : 「error C2220: warning treated as error - no 'object' file generated,warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss」
因為預設編譯的語法是有定義 -D /WX ,這個定義值,會使得 visual studio 將warning 轉成 error ,造成編譯失敗,目前我還沒找到方便一點的解決,只能用 visual studio 打開 All.sln ,再將每一個專案設定為不顯示 warning,先對專案按右鍵-> Properties-> confiuration Propertie -> c/c++ ->general ->關掉「treat warning as errors」,最後再按 visual studio 的 build 進行編譯。
錯誤訊息處理
global_intermediate\libraries.c No such file or directory
下載 third_party/cygwon
svn co http://src.chromium.org/svn/trunk/deps/third_party/cygwin@66844 third_party/cygwin
$(OutDir)/obj/global_intermediate/d8-js.cc No such file or directory
主要原因是路徑錯誤,找不到這個檔案 ,刪除錯誤的檔案,再新增正確的檔案「build\Release\obj\global_intermediate\d8-js.cc」。