Wie finde ich Triplett ohne gcc heraus?


9

Ich versuche, das Triplet für mein Gerät herauszufinden , weil ich versuche, es zu kompilieren , aber auf dem Zielgerät ist kein gcc installiert, und ich darf es nicht installieren.

Mit gcc installiert konnte ich einfach schreiben gcc -dumpmachine

Ist es möglich, diese Informationen ohne gcc zu finden?


1
Wie weit uname -akommst du hierher?
— Fiximan

Ich bekommeLinux MyDeviceName 2.6.35.3-571-gcca29a0-g8b63513-dirty #162 PREEMPT Tue Aug 4 10:57:29 CEST 2015 armv5tejl GNU/Linux
— Schwarz

1
Können Sie uns zum Beispiel den Hersteller und das Modell des Zielgeräts mitteilen Freescale MX28EVK?
— Mark Plotnick

Nein, ich kann nicht, es ist ein kleines Spezialgerät mit einem Metallgehäuse und nichts darauf geschrieben.
— Schwarz

1
Sie haben also einen armv5tejlKern GNU/Linuxals Betriebssystem, und wenn Sie den Anbieter auch wirklich brauchen, versuchen Sie lshw -class cpu, den Teil "sollte als Superuser ausgeführt werden" zu ignorieren.
— Fiximan

Antworten:


6

Sie können viele Informationen erhalten, indem Sie unameauch filedie Art der ausführbaren Dateien überprüfen :

$ gcc -dumpmachine
x86_64-linux-gnu
$ uname -o -m
x86_64 GNU/Linux
$ file /usr/bin/file
/usr/bin/file: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=d8ac02806880576708bf189c064fca78ea89f1d0, stripped

Wenn Ihr Gerät nicht fileinstalliert ist, kopieren Sie eine ausführbare Binärdatei von diesem auf einen anderen Linux-Computer und führen Sie sie filedort aus.


Vielen Dank für Ihre Antwort. Wo finde ich eine ausführbare Binärdatei? Unter / usr / bin? Sorry, ich bin so ziemlich Anfänger, also wäre ein Beispiel großartig.
— Schwarz

1
Wenn Sie den Dateibefehl wie im obigen Snippet gezeigt erhalten haben, können Sie ihn selbst als ausführbares Beispiel verwenden. Andernfalls sollte jede andere Datei in / usr / bin ausreichen.
— Planetmaker

2

Sie müssen Dateien im Dateisystem finden, die das Triplett beibehalten, das configurean die Erstellungszeit Ihres Zielbenutzerlandes übergeben / von diesem geprüft wurde.

In gängigen GNU / Linux-Distributionen ist es am besten, nach gängigen Befehls-Binärdateien wie zu fragen bash curl make svn. Im folgenden Beispiel zu Debian / armhf (QEMU-Bild von hier ) habe ich das kanonische Triplett arm-unknown-linux-gnueabihfvon erhalten bash --version. Es wäre also grundsätzlich sicher, meine Cross-Toolchain für dieses System durch zu konfigurieren /path/to/configure --target=arm-unknown-linux-gnueabihf.

root@debian-armhf:~# bash --version
GNU bash, version 4.2.37(1)-release (arm-unknown-linux-gnueabihf)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Es gibt keinen zuverlässigen Weg, nicht-kanonische Tripletts wie arm-linux-gnueabihf x86_64-linux-gnuaus dem Userland zu kennen, und es könnte verteilungsspezifische Konventionen wie Debian Multiarch und Tupel geben . Sie müssen Informationen aus dem Dokument Ihrer Distribution oder anderen Ressourcen online sammeln.


Vielen Dank für Ihre Antwort, aber leider ist der Befehl "bash" auch nicht verfügbar.
— Schwarz

Welche Distribution verwenden Sie
— Erkin Alp Güney

2

Eine andere Option ist make -v. In meinem Laptop:

$ make -v 
GNU Make 4.1
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Dann ist dreifach gebaut x86_64-pc-linux-gnu.


Es stellt sich heraus, dass diese Antwort falsch ist. Das Build-Triplett ist x86_64-linux-gnutrotz allem, was makegesagt wird.
— Joshua

@ Joshua Bitte lesen Sie dies: wiki.osdev.org/Target_Triplet
— mja

Die meisten Menschen müssen das Triplett kennen, um zu wissen, woran sie weitergeben sollen, ./configureoder um etwas zu kompilieren. Beim Cross-Compilieren ist nur der Name relevant, den die Cross-Tools annehmen.
— Joshua
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.