在 Arm64 Linux 上编译
如果您已经了解如何在非 x86 或 Apple Silicon Mac 上的机器上 检出 和 构建 V8 的说明,您可能会遇到一些麻烦,因为构建系统会下载本地二进制文件,然后无法运行它们。但是,即使使用 Arm64 Linux 机器来处理 V8 **不受官方支持**,克服这些障碍也相当简单。
绕过 vpython
#
fetch v8
、gclient sync
和其他 depot_tools
命令使用名为“vpython”的 Python 包装器。如果您看到与之相关的错误,您可以定义以下变量来使用系统的 Python 安装。
export VPYTHON_BYPASS="manually managed python not supported by chrome operations"
兼容的 ninja
二进制文件 #
首先要做的是确保我们使用 ninja
的本地二进制文件,而不是 depot_tools
中的二进制文件。一个简单的方法是在安装 depot_tools
时调整您的 PATH,如下所示。
export PATH=$PATH:/path/to/depot_tools
这样,您就可以使用系统的 ninja
安装,因为它很可能可用。虽然如果它不可用,您可以 从源代码构建它。
编译 clang #
默认情况下,V8 将希望使用它自己的 clang 构建,该构建可能无法在您的机器上运行。您可以调整 GN 参数以 使用系统的 clang 或 GCC,但是,您可能希望使用与上游相同的 clang,因为它将是最受支持的版本。
您可以直接从 V8 检出中在本地构建它。
./tools/clang/scripts/build.py --without-android --without-fuchsia \
--host-cc=gcc --host-cxx=g++ \
--gcc-toolchain=/usr \
--use-system-cmake --disable-asserts
手动设置 GN 参数 #
便利脚本可能默认情况下无法工作,相反,您必须按照 手动 工作流程手动设置 GN 参数。您可以使用以下参数获得通常的“release”、“optdebug”和“debug”配置。
release
is_debug=false
optdebug
is_debug=true
v8_enable_backtrace=true
v8_enable_slow_dchecks=true
debug
is_debug=true
v8_enable_backtrace=true
v8_enable_slow_dchecks=true
v8_optimized_debug=false
使用系统的 clang 或 GCC #
使用 GCC 构建只是禁用使用 clang 编译。
is_clang=false
请注意,默认情况下,V8 将使用 lld
进行链接,这需要最新版本的 GCC。您可以使用 use_lld=false
切换到 gold 链接器,或者另外使用 use_gold=false
使用 ld
。
如果您想使用系统中安装的 clang,例如在 /usr
中,您可以使用以下参数。
clang_base_path="/usr"
clang_use_chrome_plugins=false
但是,鉴于系统的 clang 版本可能不受良好支持,您可能会遇到警告,例如未知的编译器标志。在这种情况下,使用以下命令停止将警告视为错误很有用。
treat_warnings_as_errors=false