Arm64 Linux でのコンパイル

x86 でも Apple Silicon Mac でもないマシンで V8 の チェックアウトビルド に関する手順を実行した場合、ビルドシステムがネイティブ バイナリをダウンロードして実行できないため、問題が発生した可能性があります。ただし、Arm64 Linux マシンを使用して V8 で作業することは 公式にはサポートされていませんが、それらの障害を克服するのは非常に簡単です。

vpython のバイパス #

fetch v8gclient sync、およびその他の depot_tools コマンドは、「vpython」と呼ばれる Python のラッパーを使用します。それに関するエラーが表示された場合、次の変数を定義して代わりにシステムの Python インストールを使用できます。

export VPYTHON_BYPASS="manually managed python not supported by chrome operations"

互換性のある ninja バイナリ #

最初に、depot_tools にあるバイナリではなく、ninja にネイティブ バイナリを使用するようにする必要があります。これを行う簡単な方法は、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」構成を取得できます。

is_debug=false
is_debug=true
v8_enable_backtrace=true
v8_enable_slow_dchecks=true
is_debug=true
v8_enable_backtrace=true
v8_enable_slow_dchecks=true
v8_optimized_debug=false

システムの clang または GCC の使用 #

GCC でのビルドは、clang を使用したコンパイルを無効にするだけです。

is_clang=false

既定では、V8 は GCC の新しいバージョンが必要な lld を使用してリンクします。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