Ich versuche, Ruby in meinem Home-Verzeichnis auf einem Linux-Server (ohne Root-Zugriff) zu installieren, was natürlich die Verwendung von erfordert gcc
. Das nächste, was ich finden kann, ist ein Verzeichnis mit diesem Namen, das (wenn Sie tief genug gehen) enthält cc1
:
>: find / -iname gcc 2> /dev/null
/usr/libexec/gcc
>: tree -if /usr/libexec/gcc
/usr/libexec/gcc
/usr/libexec/gcc/x86_64-redhat-linux
/usr/libexec/gcc/x86_64-redhat-linux/4.1.1
/usr/libexec/gcc/x86_64-redhat-linux/4.1.1/cc1
/usr/libexec/gcc/x86_64-redhat-linux/4.1.2 -> 4.1.1
Die Tatsache , dass CC1 Umleitungen GCC auf Wikipedia etwas in der Nähe Identität zu implizieren scheint, aber es gibt keine andere Erwähnung von CC1 auf der GCC - Seite neben der Notiz Umleitung und Googeln hat mir nichts nützlich, und meine Versuche, den Einsatz bekommen cc1
in Ort gcc
haben versagt.
Was genau ist die Beziehung zwischen ihnen? Und gibt es mir Hoffnung, Ruby auf dieser Maschine zu kompilieren?
cc1
Dateien mit#include
und#define
Direktivengcc
Der Name der Suitecc
ist nur der C-Compiler aus dieser Suite.Das Wort
cc
ist auch ein generischer Name für einen bestimmten c-Compiler unter Unix-Systemen. Es kommt beispielsweise nicht selten vor, dass eine UmgebungsvariableCC
in einem bestimmten Erstellungsskript oder Konfigurationsskript aufgerufen wird. Wenn Sie pedantisch sein möchten, verweist diese Variable normalerweise auf ac Compiler, der nicht unbedingt die Verknüpfung Ihres kompilierten Objekts ausführt, wird normalerweise verwendet, um auf einen Compiler zu verweisen, der "nur" kompiliert.cc
fromgcc
kann jedoch eine fertige ausführbare Datei ausgeben, sodass dieser letzte Schritt auch mit dem Linker ausgeführt werden kann.Das Wort
cc1
wird oft "intern" oder beim Lesen von GNU-Dokumenten ( Beispiel ) verwendet. Es wird auch verwendet, um gcc-bezogene Bibliotheken nach der Sprache oder dem Compiler zu benennen, zu dem sie gehören (in diesem Fall gehört cc1 = zum c-Compiler).tatsächlich, wenn Sie fragen,
gcc
was die Bedeutung des Wortes istcc1
Es sollte mit dem Pfad für die Bibliothek für den CC-Compiler antworten, sodass Sie versuchen, etwas auszuführen, das eine Bibliothek und keine echte ausführbare Datei ist.
Es ist viel einfacher, sich CC als C-Compiler zu merken und alles zu vereinfachen. Umgehen Sie diesen CC1. Sie müssen nicht wissen, wie die Dinge intern funktionieren, es sei denn, Sie möchten eine lange Reise beginnen.
quelle
Wie bereits erwähnt,
gcc
verwendetcc1
.Die genaue Art
cc1
und Weise , wiecpp
und wie andere Unterprogrammeld
aufgerufen werden, wird durch das Format der Spezifikationsdateien bestimmt .Die aktuelle Spezifikationsdatei kann angezeigt werden mit:
Der relevante Abschnitt scheint zu sein:
Und Sie können Ihre eigene Spezifikationsdatei verwenden mit:
Natürlich ändern Befehlszeilenoptionen, die an GCC übergeben werden, indirekt den Aufruf der Unterprozesse. Das Manipulieren von Spezifikationsdateien bietet Ihnen jedoch mehr Flexibilität und ermöglicht Ihnen Aktionen, die mit Befehlszeilenoptionen nicht möglich sind, z. B. /programming/7493620/inhibit-default-library-paths-with-gcc
Sie können beobachten, was einfach läuft mit:
Beispielausgabe:
quelle
cc1
ist sowohl der Präprozessor als auch der Compiler, dessen Eingabe C-Quellcode und dessen Ausgabe Assembler-Code ist.Sie können sehen, dass
cc1
einer der Befehle (der erste) durch Ausgabe aufgerufen wird (Syntax abhängig von der Version):gcc-8 -v SOMESOURCE.c
quelle