Como posso construir o Google V8 no FreeBSD com clang?

2

Estou tentando criar o V8 do Google no FreeBSD 9.1 usando o clang e encontrando o seguinte erro:

/usr/bin/ld: final link failed: Nonrepresentable section on output
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
gmake[1]: *** [/root/v8/out/x64.release/cctest] Error 1
gmake[1]: Leaving directory '/root/v8/out'
gmake: *** [x64.release] Error 2

Eu precisava usar o gmake em vez de make, e adicionei o seguinte para usar o clang:

setenv CC /usr/bin/clang
setenv CXX /usr/bin/clang++
setenv GYP_DEFINES "clang=1"

Algumas informações sobre a versão:

# clang -v
FreeBSD clang version 3.1 (branches/release_31 156863) 20120523
Target: x86_64-unknown-freebsd9.0
Thread model: posix
# gmake -v
GNU Make 3.82
Built for amd64-portbld-freebsd9.1
Comando

usado para verificar código v8:

# svn checkout http://v8.googlecode.com/svn/trunk/ v8
# uname -a
FreeBSD thug 9.1-RC3 FreeBSD 9.1-RC3 #0 r242324: Tue Oct 30 00:58:57 UTC 2012     [email protected]:/usr/obj/usr/src/sys/GENERIC  amd64

O que está causando esse erro de vinculação?

    
por Utkonos 10.12.2012 / 20:04

1 resposta

1

O FreeBSD tem a versão 3.18.5 disponível no sistema de portas.

Se isso não é novo o suficiente para você, pelo menos, olhe para /usr/ports/lang/v8/Makefile . Parece v8 precisa de algumas opções especiais, consulte o seguinte trecho da porta Makefile:

ALL_TARGET=     native
MAKE_ARGS=      library=shared

.include <bsd.port.pre.mk>
.if ${CC:T:Mclang} == "clang" || ${CXX:T:Mclang++} == "clang++" || ${OSVERSION} >= 1000024
_CLANG!=        clang --version | ${HEAD} -1 | ${SED} -e 's/.*clang version \([0-9]\)\.\([0-9]\).*//'
MAKE_ENV+=      LINK=clang++
CFLAGS+=        -Wno-unused-private-field
.if ${_CLANG} >= 33
CFLAGS+=        -Wno-nested-anon-types -Wno-unused-function
.endif
.else
MAKE_ARGS+=     strictaliasing=off
USE_GCC=        any
.endif

Para sua versão do clang, parece que você precisa adicionar -Wno-unused-private-field a CFLAGS. E você precisará especificar alguns argumentos extras para make ; library=shared e strictaliasing=off

    
por 12.10.2013 / 21:47

Tags