O gcc usa os sinalizadores -mcpu = (ou -march =) para produzir código otimizado para um tipo de CPU específico. Há uma infinidade de variantes de braço, e o alvo Arm do gcc também oferece vários tipos de FPU.
Quais -mcpu = / - march = flags e -mfpu = flags são os nativos / adequados a serem usados ao compilar o código C em um Raspberry Pi?
gcc -mcpu=native -march=native -Q --help=target
me dá*** Error in
gcc ': liberdade dupla ou corrupção (parte superior): 0x0020c5a8 *** `, no Raspbian Jessie 4.4.13-v7 +, armv7l.Eu achei que esse conjunto deveria ser o ideal:
(o -mfloat-abi = hard, é claro apenas quando você usa uma distro armhf)
fonte
Não posso responder sobre a
-mfpu
sinalização, mas sugiro que experimente primeiro:Conforme relatado em
GCC manual page related to ARM options
:Você pode adicionar
-Q -v
ao seuGCC flags
para ver quais otimizações estão ativadas e prosseguir para outras otimizações, se necessário.Esta é a saída usando
-march=native
um programa de amostra no meu Raspberry Pi:fonte
-march=native
é implementada paraARM GCC
. O Raspberry Pi pode ser uma arquitetura não suportada (e, portanto, não detectada), nesse caso-march=native
não tem efeito.$ gcc -march=native test.c
cc1: error: bad value (native) for -march switch
diz o mesmo na sua saída. (mesmo com -mcpu)-march=native
foi introduzido tambémARM
.