如何在没有“外部启动数据”的情况下构建V8?

时间:2016-06-27 08:13:48

标签: v8 chromium embedded-v8 gyp

我想要一个独立的JavaScript库来嵌入。我已经构建了V8并且它正常工作,但二进制需要两个“外部数据”文件。我不想要这些文件。

我试图在没有“外部启动数据”的情况下构建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

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

2 个答案:

答案 0 :(得分:3)

编辑:自发布以来,V8现在需要大约20-30秒才能启动而没有快照文件。这是从2-3s之前。这是一种已知行为,根据v8用户邮件列表,V8开发人员不会将其视为错误。

静态:

make snapshot=off x64.debug

动态:

make snapshot=off library=shared x64.debug

我不知道如何为视觉工作室做这件事。

重要的是要记住谷歌不断改变构建过程,并且它针对谷歌员工进行了优化,对谷歌以外的任何人来说都是非常深奥的。

答案 1 :(得分:2)

使用GYP构建过程时(如您所见),在调用-Dv8_use_snapshot=false时传递参数gyp。这将关闭构建快照数据,您将不需要“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