v8引擎编译全记录2020-04-05(保姆级教程)

废话就不说了 就是想用用v8引擎 自己没有 然后就编译了 踩了无数个坑 总算是编译完成了 特此记录下来 给其他需要的同学提供一点点帮助

 

首先进入v8的github地址 https://github.com/v8/v8

v8引擎编译全记录2020-04-05(保姆级教程)_第1张图片

 

从图中可以看到 首先需要我们下载这个工具 那就先点进去 记得科学上网不然是进不去 的

v8引擎编译全记录2020-04-05(保姆级教程)_第2张图片

 

v8引擎编译全记录2020-04-05(保姆级教程)_第3张图片

 

点击这个就下载了 会下载下来depot_tools的这个工具 然后解压出来 我这里解压到e盘的根路径

打开cmd开始配置相关的代理

git config --global http.proxy=这里填自己的科学上网地址

git config --global https.proxy=127.0.0.1:1080

netsh winhttp set proxy 127.0.0.1:1080

set HTTP_PROXY=127.0.0.1:1080 这个设置好像有用 我一开始没有设置这个就出现下载不了的情况 设置之后就可以正常下载完成了

set HTTPS_PROXY

这样相关的代理就设置完毕了

 

1.开始下载源码及依赖

记住 gclient sync的时候 要全程是在科学上网的情况下 不然 会出现很多未知情况

在控制台进入v8目录 执行命令 也就是第一张图上显示的 fetch v8 这个命令会执行同时执行git pull gclient sync 两条指令

这个时候有个流量监控 可以看一下 是否有下载 一般都会有的 如果中途那个点卡住了 也没关系 可以ctrl+c 重新执行gclient sync -v (-v可以看到详细信息)

如果出现下图这种情况 那说明代理没有配置好 我刚开始 没有set HTTPS_PROXY设置这个的时候 就一直出现这个问题 卡了几个小时 后来设置上 就顺利下载完成了

v8引擎编译全记录2020-04-05(保姆级教程)_第4张图片

 

当我们下载基本快要完成的时候 会出现如下图

v8引擎编译全记录2020-04-05(保姆级教程)_第5张图片

如果 你出现这个错误 不用怕 其实很简单 就是按照他的要求设置一下 set DEPOT_TOOLS_WIN_TOOLCHAIN=0 就可以了 然后再次输入指令gclient sync -v

v8引擎编译全记录2020-04-05(保姆级教程)_第6张图片

再次运行之后 如果这个报错 是因为 代理没有代理上 如果是代理了的 他在下载的时候 会在这个后面打这个 . 这个符号 在图中可以看到一个done的 就说明下载完成了

但是我这里虽然下载完成了 但是解压缩还是报错了 所以 出现下面一堆的报错

在图中可以看到 urlopen error only got 23967408 of 46599976 bytes 类似的报错 就是可能是网路不稳定导致 也同时是python的urllib库的问题 导致 如果出现网络波动 就会立马断开 重新下载

我在这个地方 卡了差不多5个小时 后来想到一个解决方法 就是 咱们用下载工具 去直接下载这个压缩包

当下载完了之后 还需要修改一个他的脚本代码

可以看到 他的这个python脚本的路径在 v8/tools/clang/scripts/update.py

v8引擎编译全记录2020-04-05(保姆级教程)_第7张图片

我们打开这个脚本 修改这个位置 的代码 其实从名字上就可以看出来 这个DownloadUrl就是下载压缩包的 我们这里 给他改成我们自己下载的路径

其实这个函数我跟过 他主要的目的很简单就是下载 然后解压缩到特定的文件路径

我也尝试过 自己去解压缩 创建同样的文件路径 但是只执行gclient sync的时候 他会自动删除那个文件夹 说明他在哪里有介入配置之类的操作

那就没办法了 那就只能改他的代码 这样我们不用经历无限制的等待了

 

这里我换了一个执行命令 如下图 vpython.bat v8/tools/clang/scripts/update.py 因为在前面的图中可以看到 他其实 最后一步也是在执行这个脚本 然后报错的

所以这里换个思维 我直接执行这个脚本 一直到不报错为止然后 再执行gclient sync 应该就可以了

当执行了这个命令后 会如下提示 提示我们没有找到Visual Studio 还要求了版本 2017 2019 那 就好办了 我们去msdn官方下载

这个步骤就省略了 vs2017 或者vs2019 任意版本都可以 他主要要的是win10的sdk而已

安装的时候 一定要注意 用默认的路径 千万不要修改 不然你又需要很多的配置甚至改代码 记住千万不要修改安装路径

v8引擎编译全记录2020-04-05(保姆级教程)_第8张图片

 

vs安装完毕之后 我们继续gclient sync -v 如果看到下路 中 这样的有error的 解决方法非常简单 就是删除对应的文件夹

比如第一张图 显示是build error 那么把build这个文件夹删除 重新执行gclient sync -v

第二张图 也是一样的 提示clang error 那就删除clang

v8引擎编译全记录2020-04-05(保姆级教程)_第9张图片

 

v8引擎编译全记录2020-04-05(保姆级教程)_第10张图片

 

这个时候基本就可以顺利安装好相关的依赖了 会出现如下图

图中说 什么好像proxy没生效啊 或者啥的 这个不用管了 反正这个时候 程序已经退出了 而且没有任何额报错 只是警告而已 无视即可

v8引擎编译全记录2020-04-05(保姆级教程)_第11张图片

 

2.开始编译

下面就是开始编译了 参考https://v8.dev/docs/build

v8引擎编译全记录2020-04-05(保姆级教程)_第12张图片

官方告诉我们 只要打这个指令 就可以开始编译了

在这之前 可能需要设置一个环境变量 set NINJA_SUMMARIZE_BUILD=1 这个环境变量的目的是 在编译的时候 可以看到详细信息 编译时间等等

但是如果不设置 会不会出来 就不太清楚了 可以自己试一下

 

如果刚开始编译的时候 报错图下图

v8引擎编译全记录2020-04-05(保姆级教程)_第13张图片

这个提示是 没有这个dll 然而 其实在安装vs2017 或者2019的时候 他默认是没有这dll的

这个dll其实是在一个工具里 叫windbg

这个时候 最简单的方法就是 去msdn官方下一个windbg然后 修改成 图中这种文件路径就可以了

 

然后继续执行编译 就可以看到如下图

v8引擎编译全记录2020-04-05(保姆级教程)_第14张图片

 

我这个已经是编译完成了 如果还没有编译的话 第二行应该是从0开始的

这里也有坑 但是编译完成的时候 发现 他是个exe 不是dll 或者lib

而且 没有设置任何参数的地方

没办法 又得修改他的代码

在网上 找了相关资料得知 is_component_build=true 这样才是编译dll

 

然后去tools/dev/gm.py 这个文件里 打开 把下面标识的位置 修改成true 再次编译 就会出现dll了

v8引擎编译全记录2020-04-05(保姆级教程)_第15张图片

 

只不过这个编译过程相当漫长 我这差不多编译了有20分钟才完成 而且编译中cpu一直都是100%的 很吓人。。。

 

结果如下

v8引擎编译全记录2020-04-05(保姆级教程)_第16张图片

 

 

 

你可能感兴趣的:(其他)