gcc verwendet die Flags -mcpu = (oder -march =), um optimierten Code für einen bestimmten CPU-Typ zu erzeugen. Es gibt eine Vielzahl von Armvarianten und das gcc-Armziel bietet auch zahlreiche FPU-Typen.
Welche -mcpu = / - march = flags und -mfpu = flags sind die richtigen / nativen, um C-Code auf einem Raspberry Pi zu kompilieren?
gcc -mcpu=native -march=native -Q --help=target
gibt mir*** Error in
gcc ': double free oder korruption (oben): 0x0020c5a8 ***', auf Raspbian Jessie 4.4.13-v7 +, armv7l.Ich fand, dass dieses Set das Optimum sein sollte:
(das -mfloat-abi = schwer, natürlich nur wenn man eine armhf distro benutzt)
quelle
Ich kann nicht über
-mfpu
flag antworten , aber ich würde vorschlagen, diese zuerst zu versuchen:Wie berichtet in
GCC manual page related to ARM options
:Sie können dann hinzufügen
-Q -v
zu Ihrer umGCC flags
zu sehen, welche Optimierungen aktiviert sind, und gegebenenfalls mit weiteren Optimierungen fortfahren.Dies ist die Ausgabe
-march=native
mit einem Beispielprogramm auf meinem Raspberry Pi:quelle
-march=native
implementiert ist fürARM GCC
. Der Raspberry Pi ist möglicherweise eine nicht unterstützte (und daher nicht erkannte) Architektur, in diesem Fall-march=native
hat er keine Auswirkung.$ gcc -march=native test.c
cc1: error: bad value (native) for -march switch
es sagt dasselbe in deiner Ausgabe. (Dasselbe gilt für -mcpu)-march=native
das es auch eingeführt wurdeARM
.