欢迎光临散文网 会员登陆 & 注册

v8引擎编译全过程记录(保姆级教程)2023.7.22

2023-07-23 14:04 作者:XY0797-001  | 我要投稿

一开始我是参考:https://blog.csdn.net/qq_33958297/article/details/105331502,因为百度上一搜就是它

但是那篇博客讲得很迷,跟着做没有成功。后面踩坑无数,查了一大堆资料才总结出这套稳定可用的方法,希望能帮到后人。

这篇文章我在博客园、知乎、csdn上也有同步发布。

0.环境配置

1.安装了在环境变量里面的Python310和Git,(https://www.cnblogs.com/xy0797/p/17574346.html)或(https://blog.csdn.net/qq_21499983/article/details/131873250)

2.安装有VS2022(可能需要安装上使用C++的桌面开发通用Windows平台开发)

1.下载v8项目源代码

V8在GitHub上有一个官方镜像:https://github.com/v8/v8

进入项目主页后,如下图所示搜索lkgr版本的分支

记下最新版本,本人写文时是10.4-lkgr


找到一个合适的地方创建空文件夹v8,打开cmd,设定工作目录到v8文件夹

运行命令配置代理,根据代理工具的端口修改

仅仅运行上面的命令是不够的,还需要去系统设置或代理工具里面设置系统全局代理,也就是设置->网络和Internet->代理里面的

然后保持cmd窗口和代理程序不关闭,进入下一步

2.下载开发工具

访问

https://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html#_setting_up

找到Download链接下载包

新建一个depot_tools文件夹解压压缩包,然后把文件夹路径添加到PATH环境变量里面

需要确保Python已经安装,并且Python的安装目录在环境变量里面

注意:环境变量要添加在所有Python相关变量之前。

3.下载配置项目

我们回到设置了代理的那个cmd窗口

如果你不小心关闭了,需要重新运行上面的命令设置代理

我们先设置一个环境变量,不然谷歌的工具不会下载Windows相关的工具

set DEPOT_TOOLS_WIN_TOOLCHAIN=0

确保你的代理设置完毕,运行以下命令拉取源代码

fetch v8

拉取的比较费时间,哪怕你的代理能到10MB/s也要几分钟才能拉取完

拉取代码完成后,我们可以看到它在我们的v8文件夹里面又创建了一个v8文件夹

所以说先进入v8文件夹

cd v8

接着检出我们记录的10.4-lkgr版本

git checkout 10.4-lkgr

然后再次确保你的代理设置完毕,并且确保你的cmd执行过开头的环境变量设置命令,运行以下命令完成依赖处理

gclient sync -v

这一步会下载一些依赖,没有看到报错就说明成功了,我们进入下一步

4.编译安装ninja

找一个合适的地方,然后git克隆ninja项目,我是直接在E盘根目录搞

git clone https://github.com/ninja-build/ninja.git

然后进入ninja项目文件夹,调用git检出release

接下来打开vs的开发人员命令提示符Developer Command Prompt for VS 2022

如下图,进入ninja项目文件夹,运行下面的命令编译ninja

python configure.py --bootstrap

运行完成后就能看到ninja.exe在ninja项目文件夹里面

直接把它移动到之前下载解压的depot_tools目录下

5.编译v8 x64 release动态库

我们回到cmd窗口,先cd到v8\v8文件夹下

现在我们不需要代理,先去关闭系统全局代理,然后运行下面的命令关闭git和命令行的代理

再次设置环境变量,防止自己不小心关闭cmd窗口忘记了设置

set DEPOT_TOOLS_WIN_TOOLCHAIN=0

设置编译信息,动态库编译模式

python tools\dev\v8gen.py x64.release -vv -- is_component_build=true v8_static_library=false

我们可以看到报错了

提示You must install Windows 10 SDK version 10.0.20348.0 including the "Debugging Tools for Windows" feature.

所以说我们需要安装Windows 10 SDK,打开Visual Studio Installer

点击修改

选择单个组件,搜索Windows 10 SDK,勾上报错信息提示的版本,点击修改

如果你这里已经是勾上的,那么直接关闭Visual Studio Installer,进入下一步

完成后关闭Visual Studio Installer,在Windows搜索栏搜索添加或者删除程序

搜索Windows Software Development Kit

找到我们的版本,点击修改

选择Change,然后点击Next

勾上Debugging Tools for Windows,点击Change

完成后关闭窗口,回到cmd窗口,重新生成编译配置

python tools\dev\v8gen.py x64.release -vv -- is_component_build=true v8_static_library=false

配置生成成功了

使用ninja编译

ninja -C out.gn\x64.release

然后这个过程CPU会吃满,最好不要干其它事情。

跑完要个十几分钟,耐心等待。

跑完后我们进入v8\v8\out.gn\x64.release\文件夹

往下翻能找到d8.exe,打开看看正不正常

随便输入一串js代码看看结果

console.log("test"+4*8),5*7;

输出test32,返回35,说明编译的很成功

在别的地方创建个文件夹,复制出以下文件

这就是动态版本v8程序运行所需的dll,运行d8.exe发现可以正常运行(路径包含中文会导致无法双击运行)

5.编译v8 x64 release静态库

后面还有一些教程,但是B站的编辑器不支持markdown,属实难绷,工作量太大了

各位到我其它平台发的博客上看剩余部分吧:

博客园:https://www.cnblogs.com/xy0797/p/17560172.html

csdn:https://blog.csdn.net/qq_21499983/article/details/131873319

v8引擎编译全过程记录(保姆级教程)2023.7.22的评论 (共 条)

分享到微博请遵守国家法律