gcc pobiera flagi -mcpu = (lub -march =), aby wygenerować zoptymalizowany kod dla określonego typu procesora. Istnieje mnóstwo wariantów uzbrojenia, a cel Uzbrojenie gcc zapewnia również wiele typów FPU.
Które -mcpu = / - march = flagi i -mfpu = flagi są poprawne / rodzime do użycia podczas kompilacji kodu C na Raspberry Pi?
gcc -mcpu=native -march=native -Q --help=target
daje mi*** Error in
gcc ': podwójne zwolnienie lub uszkodzenie (u góry): 0x0020c5a8 ***', na Raspbian Jessie 4.4.13-v7 +, armv7l.Odkryłem, że ten zestaw powinien być optymalny:
(-mfloat-abi = hard, oczywiście tylko wtedy, gdy używasz dystrybucji armhf)
źródło
Nie mogę odpowiedzieć na pytanie o
-mfpu
flagę, ale proponuję najpierw wypróbować:Jak podano w
GCC manual page related to ARM options
:Następnie możesz dodać
-Q -v
do swojego,GCC flags
aby sprawdzić, jakie optymalizacje są włączone i przejść do dalszych optymalizacji, jeśli to konieczne.To jest wyjście używające
-march=native
z przykładowym programem na moim Raspberry Pi:źródło
-march=native
jest zaimplementowana dlaARM GCC
. Raspberry Pi może być nieobsługiwaną (a zatem niewykrywalną) architekturą, w takim przypadku-march=native
nie ma żadnego efektu.$ gcc -march=native test.c
cc1: error: bad value (native) for -march switch
to samo w twoich wynikach. (to samo dotyczy również -mcpu)-march=native
również został wprowadzonyARM
.