So ermitteln Sie den Host-Wert für configure, wenn Sie den Cross-Compiler verwenden

8

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?

    
Omer Dagan 24.02.2014, 14:03
quelle

3 Antworten

25
  

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

  • Die Maschine erstellen , in der die Toolchain erstellt wird.
  • Der Hostcomputer , auf dem die Toolchain ausgeführt wird.
  • Die Zielmaschine , in der die von der Toolchain werden ausgeführt.

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

aus

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

zu kompilieren
  

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.

    
vinay hunachyal 24.02.2014, 15:44
quelle
6

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.

    
Drugbird 22.05.2017 09:18
quelle
0

- 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

    
sorenoid 20.01.2017 02:29
quelle

Tags und Links