2012-12-11 6 views
6

Wenn Sie Cross-Compiling-Tools verwenden, müssen Sie oft ein "Ziel-Triplet" bereitstellen. Beispiel gegebenExistiert eine Liste aller bekannten Zieltripletts?

  • i686-pc-linux-gnu
  • Arm-none-linux-gnueabi
  • powerpc-unknown-linux

und so weiter ...

Diese Triplets, die manchmal tatsächlich aus vier Komponenten bestehen, haben die folgende Form:

<CPU>-<MANUFACTURER>[-<KERNEL>]-<OS>

Kernel ist optional und Hersteller kann so etwas wie "unbekannt" oder "keine" sein, da es oft nicht relevant ist.

Was ich noch nicht gefunden habe, ist eine Seite, die alle möglichen Werte dokumentiert, die hier verwendet werden. Ich weiß, dass alle Komponenten ziemlich "frei" sind, also gibt es keinen offiziellen Standard, der Sie zwingen würde, Komponenten aus einer offiziellen standardisierten Liste zu verwenden. Werkzeugdesigner und Skriptautoren erwarten jedoch, dass Benutzer diese Triplets zu ihren Werkzeugen/Skripts spezifizieren, so dass sie einige mögliche Werte im Hinterkopf haben müssen und es so etwas wie eine "inoffizielle Liste" von Werkzeugmachern, Drehbuchautoren und Benutzern geben sollte eine Referenz.

Hat jemand jemals eine solche Liste gefunden?

Antwort

5

Ja, es gibt in den Libtool-Quellen. Es heißt PLATFORMS. Es ist wahrscheinlich nicht vollständig. Es gibt auch eine Datei namens config.sub, die generiert wird, wenn autoreconf ausgeführt wird. Diese sind wahrscheinlich aktueller/vollständiger.

Aber per Definition scheint das, wonach Sie fragen, irgendwie unmöglich. Wenn es eine neue "xyz" CPU gibt, die ein Hersteller herausrollt, wird sie eine Zeit lang nicht auf der Liste erscheinen.

Also was ist ein configure Skriptschreiber in diesem Fall tun? Meine Lösung ist die folgende. Ich habe autoreconf genannt in einem Skript namens bootstrap.sh, die ein paar Dinge vor dem Build als befürwortet von der Goat Book Leute setzt. Dieses Skript verwendet sed (naja, technisch das sed Wrapper-Skript in GNU shtool), um was ich brauche in config.sub nach autoreconf kopiert es in AC_CONFIG_AUX_DIR.

Glücklicherweise sind config.sub Dateien mit Zeitstempel versehen. Wenn/wenn 'xyz' zur "offiziellen" Liste hinzugefügt wird, können Sie einfach den Zeitstempel testen. Dann fügen Sie den neuen "offiziellen" config.sub zu Ihrem Tarball hinzu und verwenden bootstrap.sh, um zu testen, ob autoreconf eine aktuelle genug config.sub schreibt. Wenn es nicht neu genug ist, kopieren Sie das alte mit dem neuen.

+0

+1 für die PLATFORMS-Liste, leider fehlt es komplett ARM. – Mecki

+0

Es gibt auch [llvm :: Triple Class Reference] (http://llvm.org/docs/doxygen/html/classllvm_1_1Triple.html). Nicht nur ARM ist gelistet, auch iOS. Es wird wahrscheinlich für Clang hilfreich sein. Ich bin mir nicht sicher, wie nützlich es für Linux-Tools ist. – jww