# v8 引擎

如何打开 v8 神秘的大门?到目前为止,我对 v8 的内部一无所知,仅仅知道他是计算机与 javascript 语言的桥梁,现在 我的好奇心趋势我去探索, v8 的内部到底是如何实现的,我能用开源的 v8 代码做些什么?

# 准备

首先我搜集了 google 的几个网址:

# 检出代码

可以从谷歌或 github 两个仓库下载源码。

git clone https://github.com/v8/v8
# 这里从谷歌下载会被墙 需要配置 git 代理
gitclone https://chromium.googlesource.com/v8/v8.git

WARNING

官方文档上写着:如果想要编译代码,不要仅仅通过 git clone 下载源码,使用以下方式。

# 检出工具

TIP

os: linux

# 这里从谷歌下载会被墙 需要配置 git 代理
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

# 配置环境变量

vim ~/.bashrc
# 添加到最后,$PATH 代表添加到已有环境变量后,而非替换,这里要非常注意
export PATH=$PATH:/path/to/depot_tools
source .bashrc

# git 配置

$ git config --global user.name "John Doe"
$ git config --global user.email "jdoe@email.com"
$ git config --global core.autocrlf false
$ git config --global core.filemode false
$ # and for fun!
$ git config --global color.ui true

# command proxy

由于需要在命令行下访问外网,需要代理才可以访问,我这里使用 polipo,基于 ss 二次代理。

sudo apt-get install polipo
vim /etc/polipo/config

#
logSyslog = true
logFile = /var/log/polipo/polipo.log

proxyAddress = "127.0.0.1"
proxyPort = 8123

socksParentProxy = "127.0.0.1:1080"
socksProxyType = "socks5"

chunkHighMark = 50331648
objectHighMark = 16384

serverMaxSlots = 64
serverSlots = 16
serverSlots1 = 32

# 启动

/etc/init.d/polipo restart
# 配置临时代理
export http_proxy="http://127.0.0.1:8123/"
export https_proxy="http://127.0.0.1:8123/"

WARNING

目前的 git 代理应该是写入配置 ,command 代理是基于窗口的。

# 源码下载

# 开启漫长的下载,此时需要保证 plipo 开启,并配置好代理。
fetch v8
# 根据文档,首次需要执行 
./build/install-build-deps.sh
# 当前 chrome-os font 下载失败

# GN 编译

在进行编译前,要确保:

  • 源码
  • 项目依赖