V8是由google公司开发的一款高性能、开源的javascript引擎,项目里需要使用V8来执行js,因此想要学习了解下V8的实现原理。打算先把源码下载到本地并编译运行起来。
工欲善其事,必先利其器
V8源码下载
V8官方文档有比较详细的说明,参考https://v8.dev/docs/source-code。
安装Git
安装git,如果已经安装请跳过
安装depot_tools
下载depot_tools
mkdir ~/v8
cd ~/v8
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
配置环境变量
export PATH=/path/to/depot_tools:$PATH
更新depot_tools
命令行执行gclient命令
源码下载
fetch v8
cd v8
等待下载完成,时间长短取决于你的网速。
V8源码编译
分支选择
建议选一个稳定分支,参考https://omahaproxy.appspot.com/,笔者选的分支是branch-heads/8.0
cd ~/v8/v8
git checkout -b v_8_0_426_30 origin/branch-heads/8.0
gclient sync #确保最新分支对应的依赖都被下载到本地
编译
参考https://v8.dev/docs/build-gn
tools/dev/gm.py x64.debug
编译完成后会生成out/x64.debug文件夹,如下图
运行d8并尝试执行js代码