2016-05-12 20 views
0

Ich weiß, dass "Ziel" ist die Maschine, die die Binärdatei wird.Was ist die Definition von Ziel in Cross-Compiling

Aber weil der Arm so viele Chips hat, gibt es eine -march-Option in gcc.

Heute gibt es Aarch64 und Aarch64 Werkzeugkette. Gcc hat keine neue Option wie -march = Aarch64

Als ich diesen Thread (https://gcc.gnu.org/ml/gcc-help/2014-10/msg00143.html) fand, wurde ich mehr verwirrt.

Was ist die Zieldefinition und warum hat GCC nicht gemacht Arm-None-Linux-eabi-march = Aarch64, aber Aarch64-None-Linux-eabi gemacht?

+0

Wenn Sie einen Compiler haben möchten, der mehrere verschiedene Architekturen gleichzeitig anvisieren kann, versuchen Sie Clang; GCC funktioniert einfach nicht so. '-march' dient zum Auswählen von Varianten innerhalb der Zielarchitektur. – Notlikethat

Antwort

1

Der A64-Befehlssatz, der verwendet wird, wenn sich ein Kern im AArch64-Status befindet, ist keine Erweiterung der vorhandenen A32/T32-Befehlssätze, sondern ein vollständig neuer Befehlssatz. Obwohl es technisch möglich war, sowohl AArch32- als auch AArch64-Befehlssätze in dieselbe gcc-Compiler-Binärdatei zu schreiben, wurde dies von den gcc-Entwicklern als nicht sinnvoll erachtet.

Möglicherweise auch siehe this answer für weitere Details.