Compilação em Linux Arm64
Se você seguiu as instruções sobre como obter e compilar o V8 em uma máquina que não seja x86 ou um Mac com Apple Silicon, pode ter encontrado alguns problemas, devido ao sistema de compilação baixar binários nativos e não conseguir executá-los. No entanto, embora usar uma máquina Linux Arm64 para trabalhar no V8 não seja oficialmente suportado, superar esses obstáculos é bastante simples.
Contornando vpython
fetch v8
, gclient sync
e outros comandos depot_tools
usam um wrapper para python chamado "vpython". Se você encontrar erros relacionados a ele, pode definir a seguinte variável para usar a instalação python do sistema:
export VPYTHON_BYPASS="python gerenciado manualmente não suportado por operações do Chrome"
Binário ninja
compatível
A primeira coisa a fazer é garantir que estamos usando um binário nativo para ninja
, substituindo o que está em depot_tools
. Uma maneira simples de fazer isso é ajustar seu PATH como segue ao instalar depot_tools
:
export PATH=$PATH:/path/to/depot_tools
Dessa forma, você poderá usar a instalação ninja
do sistema, dado que ela provavelmente estará disponível. No entanto, se não estiver, você pode compilá-la a partir do código-fonte.
Compilando clang
Por padrão, o V8 tentará usar sua própria compilação de clang que pode não funcionar na sua máquina. Você pode ajustar os argumentos do GN para usar o clang ou GCC do sistema, no entanto, pode querer usar o mesmo clang que o upstream, já que será a versão mais suportada.
Você pode compilá-lo localmente diretamente a partir do checkout do V8:
./tools/clang/scripts/build.py --without-android --without-fuchsia \
--host-cc=gcc --host-cxx=g++ \
--gcc-toolchain=/usr \
--use-system-cmake --disable-asserts
Configurando manualmente os argumentos do GN
Scripts de conveniência podem não funcionar por padrão, então você terá que configurar os argumentos do GN manualmente seguindo o fluxo de trabalho manual. Você pode obter as configurações típicas de "release", "optdebug" e "debug" com os seguintes argumentos:
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
Usando o clang ou GCC do sistema
Compilar com GCC é apenas uma questão de desabilitar a compilação com clang:
is_clang=false
Note que por padrão, o V8 fará o link usando lld
, o que requer uma versão recente do GCC. Você pode usar use_lld=false
para alternar para o linker gold ou, adicionalmente, usar use_gold=false
para usar ld
.
Se você quiser usar o clang que está instalado no seu sistema, por exemplo em /usr
, pode usar os seguintes argumentos:
clang_base_path="/usr"
clang_use_chrome_plugins=false
No entanto, dado que a versão de clang do sistema pode não ser bem suportada, é provável que você encontre advertências, como flags de compilador desconhecidas. Nesse caso, é útil parar de tratar advertências como erros com:
treat_warnings_as_errors=false