-
-
[原创] 记一次由源码构建 V8的过程
-
发表于: 2023-8-16 17:13 3172
-
前言
一篇关于编译v8的工具文。记录了编译时的大概步骤,方便大伙编译时少踩坑,无脑跟步骤即可^。^
笔者的机器是m1的mac,如果使用linux编译,步骤因该大差不差。。。
步骤
配置代理
笔者使用的是mac,终端可能开了代理也不能使用代理,为此给终端配置可控制开关的代理。
这是笔者使用的代理,安利一波~将下面代理写入 ~/.zshrc 或 ~/.zprefile文件中,再source 使用配置
1234# proxy
alias clashproxy='export http_proxy=http://127.0.0.1:7890;export https_proxy=http://127.0.0.1:7890;'
alias unclashproxy='unset http_proxy https_proxy'
配置好后可通过 clashproxy 给终端启用代理,使用 unclashproxy 关闭使用。可通过 curl ip.sb 查看IP变化
下载depot_tools
创建编译环境的文件夹
12mkdir v8-env
cd v8-env
开始获取depot_tools
1git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
将depot_tools路径添加进环境变量,并更新环境变量
123```text
export PATH
=
"所在目录/depot_tools"
:$PATH
```
安装依赖
进入depot_tools,安装依赖
1gclient sync
执行上面步骤,可能会失败。可在depot_tools文件下生成 .gclient文件,文件内容如下
12345678910solutions = [
{
"managed": False,
"name": "src",
"url": "https://chromium.googlesource.com/chromium/src.git",
"custom_deps": {},
"deps_file": ".DEPS.git",
"safesync_url": "",
},
]
创建文件后,再执行 gclient sync,开始下载并进入漫长的等待。。。
12345# 查看文件下载大小
du -h -d=1 depot_tools
# 笔者下载后有70G+,读者流量酌情下载
74G depot_tools
fetch v8
进入v8-env,开始fetch
1fetch v8
查看v8文件大小
123du -h -d=1 v8
4G v8
编译v8
笔者使用ninja编译,首先生成ninja构建文件,这样会在v8路径下生成生成 out.gn/x64.release 文件夹
12cd v8
./tools/dev/v8gen.py x64.release
开始编译,此过程也比较漫长,耐心等待
1ninja -C out.gn/x64.release
编译结束并测试
编译完成后会在指定路径生成一个叫 d8 的动态链接库
12345678910# 查看d8类型
# mac的动态链接库的文件类型是*mach-o*
# linux下的为 *elf*
# window下的为 *pe*
file out.gn/x64.release/d8
out.gn/x64.release/d8: Mach-O 64-bit executable x86_64
# 查看d8大小
du -h out.gn/x64.release/d8
38M out.gn/x64.release/d8
使用d8测试脚本
1d8 是 v8 的简易 CLI,它提供了一个极简的 JS 宿主环境,可用于 v8 的学习和调试,比起 nodejs,它更精简和专注。除了 JS 以外,d8 也具有 WASM 的解释功能,可以方便地用于测试 WASM 模块的性能。如果你的 WASM 是要在浏览器里运行的,比起 wasmtime,v8(以及 spidermonkey 等主流浏览器 JS 引擎)显然是个更合适的命令行测试方案。
12345678/*
js简易脚本
执行命令 ./out.gn/x64.release/d8 ../t.js,便能在终端看到打印内容
*/
for (var i = 0;i < 100;i++){
console.log(i);
}
总结
至此,编译过程结束,笔者使用mac下载编译,整个过程丝滑顺畅,如仍有疑问,请自行阅览相关资料解决或可留下评论。
参考文章
赞赏
他的文章
- [原创] 记一次由源码构建 V8的过程 3173
- [原创]iOS某车之家登录参数_sign&userpwd分析 22332
- [原创] iOS越狱检测app及frida过检测 20558
- [原创]2022记录一次编译aosp并刷机n5x 11500
- [原创]***极速版逆向分析 10729
看原图
赞赏
雪币:
留言: