Existem dois problemas óbvios em configure.log
:
gcc: error: missing argument to '-march='
gcc: error: unrecognized command line option '-V'
-march
deve selecionar uma arquitetura específica, por exemplo -march=i686
ou -march=x86-64
gcc -V
é uma maneira de selecionar uma versão específica do gcc quando você tem mais de um, que é um chamariz aqui: configure iterating através de um conjunto de opções ( --version -v -V
etc.) para se certificar de que pode logar versão do compilador C, seja gcc ou outra coisa.
Verifique suas variáveis de ambiente CFLAGS
e CC
,
echo CFLAGS=$CFLAGS
echo CC=$CC
a saída de
gcc -dumpmachine
gcc -v
Uma possibilidade é um arquivo specs
suspeito sobrepondo os padrões do compilador, então execute (se puder)
gcc -dumpspecs
e inclua o parágrafo *cc1_cpu:
.
Se você não pode correr isso, então eu concordo com Michael Hampton, algo está muito mal quebrado.
Ok, gcc -v
diz " Usando especificações internas. ", isso significa que você não tem um arquivo specs
quebrado, pode ter um compilador corrompido ou algo parecido com seu ambiente.
Você pode conseguir consertar isso definindo CFLAGS
para incluir -march
:
export CFLAGS="-march=x86-64 -mtune=x86-64"
(Se isso funcionar, tente -march=native -mtune=native
)
É possível que -march=native
detecção com local_cpu_detect()
(gcc interno) não esteja funcionando corretamente, embora eu realmente não consiga ver como isso acontece ( gcc/config/i386/driver-i386.c
). Isso chama cpuid
e outras instruções possivelmente restritas (qualquer chance de sua VM ter alguns recursos de segurança adicionais em vigor?) Não estou familiarizado com as alterações que o "Ubuntua / Linaro" gcc possa ter feito.
(o Linaro fornece ferramentas de desenvolvimento cruzado, mas o seu gcc não é um compilador cruzado, ele é construído com --target=x86_64-linux-gnu
)
Normalmente, se você passar -march=native
, poderá ver o que ele detecta:
gcc -v -march=native -o x hello.c 2>&1 | less
...
COLLECT_GCC_OPTIONS='-v' '-march=native' '-o' 'x'
/usr/local/libexec/gcc/i686-pc-linux-gnu/4.7.3/cc1 -quiet -v hello.c -march=core2 [...]
O script de configuração do ruby-2.1.1 faz usar -march
, mas apenas para detectar um built-in atômico ( __sync_val_compare_and_swap
), nunca chega tão longe assim.