Linux上编译V8
好吧~~看到这篇文章你也许会问: 编译一个有详细文档的V8有什么难的,你还写个东西?当翻译么? 嗯。。。如果你真的这样认为,那我只能告诉你:朋友你太天真了。v8的文档是个梗好吧。。我都没想到google这么大的公司开源个项目,文档写得如此粗糙,你要是想通过V8的文档来做v8的编译或者embed开发,我只能说 兄弟,你会被坑得错过大年三十的。为什么呢?因为开发者光顾着升级代码,不更新文档了,文档里大量老旧错误信息,网上这方面的信息上也有很多问题。 好了,多的不说了。我直接贴出这个编译的过程,中间遇到的坑以及编译samples中hello-world.cc的方法:
步骤一
google 在v8这个的编译上面用了一个极其蛋疼的工具(推广需要)。以前可以直接通过git拉下来,然后通过 make dependencies
这个方式来安装依赖,这个方式 我只能说这个老方式确实很不错。but!!这个方式已经不行了,你要是拉代码下来然后用这个命令,他会提醒你使用 gclient sync。好吧~所以这个命令是啥呢,你要是直接使用,会提醒你 压根儿没这个命令。嗯。。因为他要下google的一个包。命令如下:
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
复制代码
然后为了让全局能够使用这个命令,我们必须还要clone下来的这个路径加入到PATH中
vim ~/.zshrc
#或者.bash_profile
export PATH=~/git/depot_tools:"$PATH"
复制代码
好了 这个时候就可以使用gclient sync了,我看到有网上的博客,在同步下来的v8的代码中使用这个命令,然后在里面又同步了一个v8,然后他们还专门把下面路径的v8里面的third_party文件夹拿出来。。。好吧。。这个看着确实有点搞笑。。这个gclient sync他是把代码整个拉下来并且把v8编译所需要的依赖包都拉下来的一个工具。首先你要配置v8拉取的地址
gclient config https://chromium.googlesource.com/v8/v8.git
复制代码
这个时候文件夹下生成一个文件 .gclient,看下里面的内容
solutions = [
{ "name": "v8",
"url": "https://chromium.googlesource.com/v8/v8.git",
"deps_file": "DEPS",
"managed": True,
"custom_deps": {},
},
]
cache_dir = None
复制代码
好吧,这里面其实就注意一个叫deps_file的文件默认是DEPS,里面会记录要依赖的文件。然后你就可以使用gclient sync了。。这个东西就可以把整套代码拉下来了。所以完全不用自己再去clone代码了 。。像网上blog里那位哥们儿在clone的代码里用这个命令 然后又拉取了一个完整v8,还说依赖包安装在了v8工程下v8目录里,然后把它copy出来也是蛮搞笑的。这一步必须要用挂vpn才能完成,用shadowsocks全局模式也是没办法。这个我有亲身体会,因为我用了全剧模式依然能copy代码 但是没法安装依赖,我曾经一度以为是我自己电脑出了问题,还有安装了几次,都以失败告终。。后来仔细看报错信息 才发现是个 网络错误
Failed to connect to chromium.googlesource.com port 443: Operation timed out