无法生成 V8 Monolith

Can't get V8 Monolith to genorate

我一直在尝试在我的 make 文件中使用 -v8_monolith,但到目前为止还没有用。

我从 google 的 depot-tools 获得了 v8 代码,然后按照网上的每个教程进行尝试为 v8 编译 共享库 。我假设忍者编译器自动将 libs 放入 arch lib 文件夹,因为没有教程说要对这些文件做任何事情。 从 rn 开始,我没有从 ninja 编译器中得到任何错误。

也许我必须更改 args.gn 中的某些内容以推送到我的 libs 文件夹。可能它试图推到错误的位置。 这是它的样子:

is_debug = false
target_cpu = "x64"
use_custom_libcxx = false
v8_monolithic = true
v8_use_external_startup_data = false
is_component_build = false
v8_static_library = true

这是来自终端的整个过程:

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=depot_tools:$PATH
mkdir v8
cd v8
fetch v8
gclient sync
tools/dev/v8gen.py x64.release
#then this is the point where I manually go to args.gn to edit it
ninja -C out.gn/x64.release

我也试过从 AUR 获取 v8 包,但编译不正确

compile the shared libs for v8

在那种情况下,您需要 is_component_build = true。然后你将不得不删除 v8_monolithic,因为这会强制使用静态(即 non-shared)库。我认为 v8_static_library 不重要,至少我从未使用过它。

郑重声明,我们(V8 团队)倾向于推荐静态链接,主要是因为 V8 的变化率 API:任何时候更新共享库,都必须重新编译无论如何,程序都在使用它,因此作为共享库并没有太多好处(但有一些意外损坏的空间,静态链接构建避免了这种情况)。

puts the libs in to the arch lib folder

我不知道你所说的“arch lib 文件夹”是什么意思; libv8.so 将在 out.gn/x64.release/ 中(或您传递给 ninja -C <dir> 的任何目录)。如果你想把它放在别处,你就得把它放在别处。构建 V8 不会触及系统的其余部分(没有 make install-like 目标)。

trying to use -v8_monolith in my make files

一旦其他一切都正确,那就是-lv8 -lv8_libbase -lv8_libplatform,相应的库文件将被称为libv8.solibv8_libbase.solibv8_libplatform.so