Frage: Wie kompiliere ich ein C ++ - Programm mit dem gcc-Compiler?
info.c:
#include<iostream>
using std::cout;
using std::endl;
int main()
{
#ifdef __cplusplus
cout << "C++ compiler in use and version is " << __cplusplus << endl;
#endif
cout <<"Version is " << __STDC_VERSION__ << endl;
cout << "Hi" << __FILE__ << __LINE__ << endl;
}
und wenn ich versuche zu kompilieren info.c
$ gcc info.C
Undefined first referenced
symbol in file
cout /var/tmp/ccPxLN2a.o
endl(ostream &) /var/tmp/ccPxLN2a.o
ostream::operator<<(ostream &(*)(ostream &))/var/tmp/ccPxLN2a.o
ostream::operator<<(int) /var/tmp/ccPxLN2a.o
ostream::operator<<(long) /var/tmp/ccPxLN2a.o
ostream::operator<<(char const *) /var/tmp/ccPxLN2a.o
ld: fatal: Symbol referencing errors. No output written to a.out
collect2: ld returned 1 exit status
Kann der gcc-Compiler keine C ++ - Programme kompilieren? Was ist der Unterschied zwischen gcc und g ++? Vielen Dank,
Antworten:
gcc kann tatsächlich gut C ++ - Code kompilieren. Die Fehler, die Sie erhalten haben, sind Linkerfehler , keine Compilerfehler.
Wenn Sie die Kompilierungszeile so ändern, ist dies wahrscheinlich:
gcc info.C -lstdc++
Dadurch wird es mit der Standard-C ++ - Bibliothek verknüpft, und es funktioniert einwandfrei.
Sie sollten jedoch Ihr Leben einfacher machen und g ++ verwenden.
BEARBEITEN:
Rup sagt es am besten in seinem Kommentar zu einer anderen Antwort:
quelle
Wenn Sie dem Code die Erweiterung .c geben, glaubt der Compiler, dass es sich um C-Code handelt, nicht um C ++. Der C ++ - Compilertreiber heißt g ++. Wenn Sie den gcc-Treiber verwenden, treten Linkerprobleme auf, da die Standard-C ++ - Bibliotheken standardmäßig nicht verknüpft werden. Also du möchtest:
g++ myprog.cpp
Und denken Sie nicht einmal daran, eine .C-Erweiterung in Großbuchstaben zu verwenden, es sei denn, Sie möchten Ihren Code niemals portieren und sind bereit, von denen gehasst zu werden, mit denen Sie arbeiten.
quelle
.C
( Groß- ) Erweiterung als eine C ++ - Erweiterung. Folgendes funktioniert einwandfrei:gcc test.C -lstdc++ -o test
oderg++ test.C -o test
.verwenden
g++
stattgcc
.quelle
Standardmäßig wählt gcc die Sprache basierend auf der Dateierweiterung aus. Sie können gcc jedoch zwingen, mit der Option -x ein anderes Sprach-Backend auszuwählen:
gcc -x c++
Weitere Optionen finden Sie in der gcc-Manpage unter "Optionen zur Steuerung der Art der Ausgabe". Siehe z. B. http://linux.die.net/man/1/gcc (suchen Sie auf der Seite nach dem Text
-x language
).Diese Funktion ist sehr nützlich in Fällen, in denen gcc die Sprache mithilfe einer Dateierweiterung nicht erraten kann, z. B. wenn Sie Code generieren und ihn über stdin an gcc weitergeben.
quelle
Der Unterschied zwischen gcc und g ++ ist:
gcc | g++ compiles c source | compiles c++ source
Verwenden Sie g ++ anstelle von gcc, um Ihre C ++ - Quelle zu kompilieren.
quelle
Wenn ich mich richtig erinnere, bestimmt gcc den Dateityp aus dem Suffix. Also, mach es foo.cc und es sollte funktionieren.
Und um Ihre andere Frage zu beantworten, das ist der Unterschied zwischen "gcc" und "g ++". gcc ist ein Frontend, das den richtigen Compiler auswählt.
quelle
Es hat gut für mich funktioniert. Nur ein Zeilencode in cmd.
Stellen Sie zunächst sicher , dass Sie den Compiler gcc (für c) oder g ++ (für c ++) installiert haben .
In cmd für gcc Typ:
gcc --version
in cmd für g ++ Typ:
g ++ --version
Wenn es installiert ist, fahren Sie fort.
Kompilieren Sie nun Ihre .c oder .cpp mit cmd
für .c- Syntax:
gcc -o exe_filename yourfilename.c
Beispiel:
gcc -o myfile myfile.c
Hier ist exe_filename (Beispiel myfile) der Name Ihrer EXE-Datei, die Sie nach der Kompilierung erstellen möchten (Hinweis: Ich habe hier keine Erweiterung eingefügt). Und yourfilename.c (im Beispiel myfile.c) ist Ihre Quelldatei mit der Erweiterung .c.
Gehen Sie nun zu einem Ordner mit Ihrer .c-Datei. Hier finden Sie eine Datei mit der Erweiterung .exe. Öffne es einfach. Hurra..
Für die CPP- Syntax:
g ++ -o exe_filename yourfilename.cpp
Danach ist der Vorgang der gleiche wie für .c.
quelle