Welcher Header definiert das Makro, das die Maschinenarchitektur angibt?

7

Kürzere Version der Frage:

Welche C - Header enthält das Makro , das entspricht die Maschinenarchitektur des Systems (zB __x86_64__, __ia64__, __mips__?)

Längere Version der Frage:

Ich möchte die Ganglienüberwachungstools auf einem Tilera- basierten System ausführen , auf dem Linux ausgeführt wird.

Ganglia hat derzeit keine Unterstützung für Tilera. Damit dies funktioniert, musste ich eine C-Funktion namens machine_type_func ändern , die die Maschinenarchitektur zurückgibt. Der Hauptteil dieser Funktion wird zur Kompilierungszeit festgelegt. Er sieht folgendermaßen aus:

g_val_t
machine_type_func ( void )
{
   g_val_t val;

#ifdef __i386__
   snprintf(val.str, MAX_G_STRING_SIZE, "x86");
#endif
#ifdef __x86_64__
   snprintf(val.str, MAX_G_STRING_SIZE, "x86_64");
#endif
...
   return val;
}

Ich muss die entsprechende Zeile für Tilera hinzufügen, kenne aber nicht den Namen des Makros, das ein Tilera-basiertes System angibt. Ich vermute, dieses Makro ist in einem der Standard-Linux-Header definiert, aber ich weiß nicht, in welchem ​​ich suchen soll.

Lorin Hochstein
quelle

Antworten:

8

Keine Header-Datei definiert es - diese Makros werden vom Compiler vordefiniert. Um die vollständige Liste der vordefinierten Makros herauszufinden, gehen Sie wie folgt vor:

echo | gcc -E -dM -

Durchsuchen Sie dann die Ergebnisse nach wahrscheinlichen Makros.

TomH
quelle