V8 js 引擎编译

科普 | 编译 V8 源码

UBUNTU14.04编译V8

JS引擎V8源码解析之对象第四篇(基于V8 0.1.5)

JS引擎V8源码解析之对象第一篇(基于V8 0.1.5)

UBUNTU16 64位下编译LINPHONE-ANDROID

JS引擎V8源码解析之MAP对象上篇(基于V8 0.1.5)

JS引擎V8源码分析之HANDLESCOPE(基于V8 0.1.5)

JS引擎V8源码分析之HANDLE(基于V8 0.1.5)

UBUNTU下编译QGROUNDCONTROL源码

源码安装V8报错

UBUNTU16下V8源码编译之编译源码(第二篇)
标签: v8  源码编译

0X00 前言
V8引擎使用Ninja进行构建源码,GN是用来辅助生成Ninja配置文件的工具。

从源码构建V8需要三个步骤:

生成构建所需文件( generating build files)
编译(compiling)
运行测试用例(running tests)
官方提供两种途径构建V8

一键式工作流,使用辅助脚本gm优雅的完成构建3个步骤
原始工作流,手动一步一步的执行构建命令
依赖安装
安装ninja

sudo apt-get install ninja-build
1
depot_tools的依赖最好写入.bashrc下,否则会提示gn找不到

echo 'export PATH=$PATH:"/path/to/depot_tools"' >>~/.bashrc
1
0X01 通过GM工具构建V8(一键式工作流)
gm是用于生成构建文件,出发构建和可选的运行测试用例等工作的all-in-one式的一键脚本。你可以在V8中找到tools/dev/gm.py,我们推荐使用别名方便干活:

alias gm=/path/to/v8/tools/dev/gm.py
1
可以使用gm构建我们所熟知的V8,比如x64.release:

gm x64.release
1
如果需要构建后运行测试,可以运行:

gm x64.release.check
1
gm 输出所有命令的执行过程,有了这些信息,跟踪和重建会很方便。
gm 开启构建所需要的二进制(debug版的二进制),同时运行特定的测试,使用下面这一条命令:

gm x64.debug mjsunit/foo cctest/test-bar/*
1
0X02 手动构建V8(原始工作流)
STEP 1:生成构建文件
有两种方法生成构建文件

使用gn生成
使用v8gen生成
使用GN生成构建文件
使用gn生成构建文件并输出到out/foo目录

gn args out/foo
1
配置gn参数,详细的参数指南【传送门】

gn gen out/foo --args='is_debug=false target_cpu="x64" v8_target_cpu="arm64" use_goma=true'
1
这个命令会使用arm64模拟器编译V8,生成release版,开启goma模式。

查看gn的参数列表

gn args out/foo --list
1
使用V8GEN生成构建文件
这里还是推荐使用别名提高生产力

alias v8gen=/path/to/v8/tools/dev/v8gen.py
1
使用v8gen --help查看更多帮助。

查看可用的配置列表

v8gen list
1
v8gen list -m client.v8
1
通过预定义模式client.v8构建,并输出到foo目录下

v8gen -b 'V8 Linux64 - debug builder' -m client.v8 foo
1
v8gen的原理是借助mb_config.pyl文件。根据master配置(-m)和builder配置(-b)来生成编译文件,我们在infra/mb/mb_config.pyl找到对应的配置:
在这里插入图片描述

STEP 2:编译V8
编译V8的整个项目

ninja -C out/x64.release
1
执行过程

$ gm x64.debug
# gn gen out/x64.debug
Done. Made 142 targets from 82 files in 337ms
# autoninja -C out/x64.debug d8
ninja: Entering directory `out/x64.debug'
[398/1509] CXX obj/torque_generated_initializers/js-proxy-tq-csa.o
1
2
3
4
5
6
只编译特定对象,比如d8

ninja -C out/x64.release d8
1
STEP 3:运行测试
配置测试的输出路径

tools/run-tests.py --outdir out/foo
1
也可以测试最近一次编译构建(在out.gn中)

tools/run-tests.py --gn
1
0X03 参考文献
https://v8.dev/docs/build-gn#gn

版权声明:本文为counsellor原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/counsellor/article/details/103290675

你可能感兴趣的:(CNC,CAMmots编译,V8引擎)