Allgemeine Frage: Wenn ich einen Cross-Compiler verwende, wie kann ich den Wert der Option "--host" angeben, die ich beim Ausführen von configure angeben soll?
Spezifisch: Ich benutze Cross Compiler für Arm64 Arch. Was ist der korrekte "--host" -Wert zu verwenden?
Wenn ich einen Cross-Compiler verwende, wie kann ich den Wert der Option
--host
angeben, die ich geben soll, wenn ich./configure
ausführen?
Drei Maschinen müssen unterschieden werden, wenn über die Toolchain-Erstellung diskutiert wird
Vier gängige Build-Typen sind für Toolchains möglich:
Nativer Build , also BUILD==HOST==TARGET
Wird verwendet, um normale gcc für Workstations zu erstellen. z.B. BUILD==HOST==TARGET==x86
Cross-Build , also BUILD==HOST!=TARGET
Wird verwendet, um eine Toolchain zu erstellen, die auf Ihrer Workstation funktioniert, aber eine Binärdatei für das Ziel generiert. z.B. BUILD==HOST==x86 TARGET==arm
Cross-native Build , also BUILD!=HOST==TARGET
Wird zur Toolchain verwendet, die auf Ihrem Ziel funktioniert und eine Binärdatei für das Ziel generiert. z. B. BUILD==x86 HOST==TARGET==ARM
Kanadische Toolchain , also BUILD!=HOST!=TARGET
Wird verwendet, um ARCHITECTURE A zu erstellen. Eine Toolchain läuft auf B und generiert eine Binärdatei für die Architektur C. Zum Beispiel BUILD==x86 HOST==mac TARGET==arm
Mit bewaffnet diese Grundlagen kommen zu Ihrer Frage.
Führen Sie für jede Software zuerst ./configure --help
Hosttyp:
%Vor% Das finden Sie oben. Je nachdem, was Sie tun möchten, müssen Sie es für das Cross-Compilieren einstellen. Wenn alle Optionen verfügbar sind, dann möchten Sie auf dem Armziel ausführen und dann --host={your toolchain triplet} --target={your toolchain triplet}
einstellen.
Wenn Sie beispielsweise arm-none-linux-gnueabi-gcc
verwenden, setzen Sie --host=arm-none-linux-gnueabi --target=arm-none-linux-gnueabi
. Dies wird in Ihr Makefile geschrieben.
Abschließend wird die generierte ausführbare Datei auf dem Ziel ausgeführt. Für --build
wird dies automatisch festgelegt, keine Sorge.
Für einige Softwarepakete sind nur zwei Optionen verfügbar i.e host and build
. hier, wenn host
genug ist, um
Speziell: Ich verwende den Cross Compiler für
arm64
arch. Was ist der richtige--host
Wert zu verwenden?
Für x86_64 wird normalerweise --host={triplet}
angegeben, also denke ich, dass das gleiche für arm64 funktionieren sollte, indem du --host={triplet}
für deine Toolchain einstellst, aber ich bin mir nicht sicher.
Der einfachste Weg herauszufinden, was in --host
eingegeben werden muss, ist, indem Sie config.guess
auf dem Host-Rechner ausführen. Auf meinem Rechner befand es sich in /usr/share/automake-1.15/
, aber ich empfehle, locate config.guess
auszuführen, um es zu finden.
Das Skript ist Open Source (GPL) und unter dieser Adresse verfügbar, falls es auf Ihrem Computer nicht verfügbar ist:
Auf meinem Zielrechner, einem Tegra X1 (auch ein Aarch64) war die Antwort, die es gab, aarch64-unknown-linux-gnu, was für Cross-Compiling gut zu funktionieren scheint.
- Host ist das "Triplet" für die Maschine, auf der der resultierende Build letztendlich ausgeführt wird. In deinem Fall ist "arm64" die Architektur, aber es ist nur ein Teil des Triplets. In jedem Fall wird es dem String "aarch64" im Triplet zugeordnet. Ein möglicher Wert ist
- host = aarch64-linux-android
diese Seite von gnu.org gibt die definitive Antwort zu --host / - target / - build usage
Tags und Links arm64 cross-compiling autoconf