d8 编译要点
文章目录
d8 是 v8 提供的用以 debug v8 的 shell ,因为 v8 自身就是一个库,不提供 console 的实现。d8 会在编译 v8 时顺便实现,不过我只想编译 d8 。
代理工具
使用 tscoks
。
我平常喜欢用 proxychains
,但谷歌的工具在
proxychains
下都无法生效(动态库注入失败)。tsocks
相对较好(但比
proxychains
慢)。
获取仓库
首先要拉取 depot_tools
,然后把 depot_tools
仓库地址追加到 PATH
里。
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
PATH=PATH:/path/to/depot_tools
编译 v8 需要使用 ninja
,建议使用包管理器下载,因为各个系统都有。
完成上述工作我们便可以开始尝试获取 v8 的代码了。
gclient
fetch v8 # 获取v8 源码
gclient sync
记住用 tsocks
做代理,如果做了透明代理也行。
编译 d8
首先生成编译配置,
tools/dev/v8gen.py x64.debug
然后使用 ninja
进行编译,
ninja -C out.gn/x64.debug d8
此处我们只编译 d8 。
完成后,我们的 d8 在 ./out.gn/x64.debug
下。
生成
compile_commands.json
借助 ninja
完成。3
ninja -C ./out.gn/x64.debug d8 -t compdb > compile_commands.json
compile_commands.json
主要是为了更方便阅读代码。C++ 的
LSP 都支持这个。
我个人建议使用 clangd
做 LS ,比 ccls
好太多了。
文章作者 bigshans
上次更新 2023-08-04