如何在没有 "external startup data" 的情况下构建 V8?

How to build V8 without "external startup data"?

我想要一个用于嵌入的独立 JavaScript 库。我已经构建了 V8 并且它可以正常工作,但是二进制文件需要两个 "external data" 文件。我不想要这个文件。

我试图在没有 "external startup data" 的情况下构建 V8。我尝试在 build.common.gypi 和 build/standalone.gypi 中设置 v8_use_external_startup_data : 0,但是 make 在某个时候报告失败。

我正在使用以下代码构建 v8:

git clone https://chromium.googlesource.com/chromium/tool/depot_tools.git
export PATH=`pwd`/depot_tools:"$PATH"
fetch v8
gclient sync
cd v8
git checkout branch-heads/5.1
# ... modifying gyni files
make x64.release -j 20

我正在使用默认的静态链接。 如何在不需要 natives_blob.bin 和 snapshot_blog.bin 的情况下构建 V8?

编辑:自发布以来,V8 现在需要大约 20-30 秒才能在没有快照文件的情况下启动。这高于之前的 2-3 秒。根据 v8-users 邮件列表,这是一个已知行为,V8 开发人员不认为这是一个错误。

静态:

make snapshot=off x64.debug

动态:

make snapshot=off library=shared x64.debug

我不知道 visual studio 怎么做。

重要的是要记住,google 不断更改构建过程,并且它针对 google 员工进行了优化,并且对于 google 以外的任何人来说通常非常深奥。 =12=]

当使用 GYP 构建过程时(就像你看起来那样),在调用 gyp 时传递参数 -Dv8_use_snapshot=false。这会关闭构建快照数据,您将不需要 "natives_blob.bin" 和 "snapshot_blob.bin"。我的命令行看起来像这样(对于 V8 5.3,n.b。GYP 脚本最近移动了):

python.exe gypfiles\gyp_v8 -Dtarget_arch=x64 -Dcomponent=shared_library -Dv8_enable_i18n_support=false -Dv8_use_snapshot=false -G msvs_version=2013