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