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?

Schwarz
quelle
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.

Planetenmacher
quelle
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.

yaegashi
quelle
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.

mja
quelle
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