v8 的github位址 :
因為需要訪問到google的伺服器,所以下面做的一切都需要翻到牆外面。翻牆方法自行解決吧。
v8的版本控制是有乙個叫depot_tools的工具維護的,這個東西相當於的將git包了一層。
[具體安裝方法](
mac 下編輯 ~/.bash_profile檔案,在檔案最開頭新增下列**
其中/users/***/documents/git/depot_tools是clone庫後的路徑
export depot_tools=/users/***/documents/git/depot_tools
export path=$depot_tools:$path
儲存環境變數
source ~/.bash_profile
gclient sync
使用gn生成編譯檔案
tools/dev/v8gen.py x64.release
使用ninjia編譯
ninja -c out
.gn/x64.release
(選項)使用py指令碼測試編譯後的檔案是否有問題
3.1 使用xcode生成乙個命令列工程,
file->
new->project-> 選擇mac os 下的command line tools工程
3.2 將v8/include 資料夾拷貝到xcode xx.xcodeproj同級目錄下。
3.3 設定檔案索引路徑
targer -> build settings -> search paths 設定 header search paths 新增一項$(srcroot)
targer -> build settings -> search paths 設定 user header search paths 新增一項$(srcroot)/include
3.2 拷貝靜態庫
在xcode工程,xx.xcodeproj同級目錄下新建乙個lib資料夾,再在其次級新建icu和inspector資料夾
從x64.release/obj
拷貝 libv8_base.a、libv8_external_snapshot.a、libv8_libbase.a、libv8_libplatform.a、libv8_libsampler.a拷貝至剛新建的lib目錄
從x64.release/obj/third_party/icu
拷貝libicui18n.a、libicuuc.a至 lib/icu資料夾
從x64.release/obj/src/inspector
拷貝libinspector.a至lib/inspector
3.3 拷貝
跳轉到xcode輸出執行檔案的目錄下
將x64.release
目錄下的
natives_blob.bin、snapshot_blob.bin、icudtl.dat
拷貝到xcode輸出執行檔案的目錄下
用官方提供的helloworld來測試。
// use of this source code is governed by a bsd-style license that can be
// found in the license file.
#include #include #include #include "include/libplatform/libplatform.h"
#include "include/v8.h"
int main(int argc, char* argv)
// dispose the isolate and tear down v8.
isolate->dispose();
v8::v8::dispose();
v8::v8::shutdownplatform();
delete platform;
delete create_params.array_buffer_allocator;
return0;
} 編譯執行。ok
v8引擎和v12引擎 深入V8引擎 AST 2
先宣告一下,這種長系列的大塊頭部落格只能保證盡可能的深入到每一行原始碼,有些 我不樂意深究就寫個注釋說明一下作用。另外,由於本地整理的比較好,部落格就隨心寫了。bool parseprogram parseinfo info,isolate isolate 所需要關心的核心 就是這些,非常簡單,pa...
JS中V8引擎簡介
document 2020 09 29 v8引擎 認識v8 v8 策略 v8常用的gc演算法 新生代物件的垃圾 將新生代記憶體也分成兩個大小相等的空間 使用空間為from,空閒空間為to 活動物件儲存於from空間中 to一直是空閒的 當from空間應用到一定程度之後 觸發gc操作 標記整理後將活動...
Js直譯器V8引擎嵌入的異常處理
js直譯器v8引擎嵌入的異常處理 2011年08月10日 v8引擎為google開發的js語言直譯器有著高效易用等特點,通常它執行乙個js指令碼需要經過編譯和執行步驟,由於我們的指令碼程式很可能不正確,隨時造成過程環節的異常,我們來解決乙個異常以及錯誤的捕捉和處理過程,如下指令碼 test.js 使...