準備工作
1.Python 2.6.x,編譯V8必備,官方網站被牆了,不過搜尋一下,很多下載,包括天空軟體園,華軍等都有。
2.Scons,與Make工具類似的編譯工具,最新版本是2.1.0,官方網站有下載。本身之前的V8版本是可以不用這個的,在從SVN遷出來的原始碼下tools檔案夾裡有Visual Studio的Project,不過最新的版本取消了,根據官方網站的Build Guide,推薦的是使用Scons來編譯V8(其實這個工具很方便的,比Make直觀的多,也簡單的多)。
3.TortoiseSVN,這個就不說了,相信基本都有安裝,官方網站下載。
4.V8Engine原始碼,從Google的SVN當中Check Out出來,最新版本地址。
編譯
注意:先安裝Python,再安裝Scons,安裝了Python後,記得設定環境變數,否則無法正常通過編譯。Scons也需要設定環境變數,它的目錄是Python安裝目錄下的Scripts。
1.啟動CMD控制台,導航到下載的v8原始碼根目錄,就是有一個SConstruct檔案(Scons就是根據它來編譯器的)的目錄。
2.編譯參數(注意要修改Visual Studio的安裝目錄):
scons arch=ia32 env="PATH:F:\Program Files\Microsoft Visual Studio 10.0\VC\bin;F:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE;F:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools,INCLUDE:F:\Program Files\Microsoft Visual Studio 10.0\VC\include;C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include,LIB:F:\Program Files\Microsoft Visual Studio 10.0\VC\lib;C:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib" libary=shared mode=release msvcrt=shared –j4
3.編譯完成後,會在根目錄生產v8.lib,v8preparser.lib,在其他程式中使用V8需要用到這兩個庫檔案以及v8的標頭檔。
附:在Javascript.NET中使用V8進行編譯
首先還是從官方網站下載最新版本的原始碼(v4.0)。
解壓後,用VS開啟,先移除對老版本V8(v2.6)的引用(直接刪除解決方案中的V8項目即可)。
之後,在根目錄建立一個Include和Lib檔案夾,把V8的標頭檔放到Include當中,生產的兩個lib檔案放到Lib當中。
開啟項目屬性,在配置屬性-C/C++-常規中的附加元件封裝含目錄中,添加自己建立的Include檔案夾。
在連接器-輸入中的附加依賴項中填入v8.lib,v8preparser.lib的完整路徑(可以用宏來填寫)。
最後開啟JavascriptContext.cpp,在SetParameter和Run(兩個重載)三個函數中加入以下代碼(進入函數第一行添加):
v8::ResourceConstraints rc;int limit = (int)&rc - 500000;rc.set_stack_limit((uint32_t *)(limit));v8::SetResourceConstraints(&rc);
這幾行代碼主要是防止出現,嘗試訪問損壞的記憶體balabalabala的錯誤。
最後,編譯即可。