Hallo,
ich versuche gerade ein kleines Programm aus dem Linux-Magazin zu
kompilieren. Drin ist ein Befehl "#include
On Tue, 11 Feb 2003 at 21:20 (+0100), Ralph Müller wrote:
ich versuche gerade ein kleines Programm aus dem Linux-Magazin zu kompilieren. Drin ist ein Befehl "#include
". Diese Datei "iostream.h" wird nicht gefunden: $ gcc -o programm programm.c programm.c:4: iostream.h: Datei oder Verzeichnis nicht gefunden
Diese Datei ist aber im Verzeichnis /usr/include/g++/ enthalten. Offenbar sucht gcc nicht in diesem Verzeichnis.
Ein "man gcc" brachte mich auf die Idee es mit $ gcc -I/usr/include/g++/ -o programm programm.c zu versuchen. Aber damit kommen nur hunderte von Zeilen mit wirren Fehlermeldungen. Das scheint also auch der total falsche Lösungsansatz zu sein.
gcc ist der C-Compiler, g++ der C++-Compiler. Im Prinzip handelt es sich aber um den gleichen Compiler nur dass der mit anderen Einstellungen aufgerufen wird; Du hast gerade eine solche `andere Einstellung' gefunden. Weiterhin muss natuerlich gegen die `richtige' Bibliothek gelinkt werden (also libc oder libstdc++). Naja, und iostream.h gibt es eben nur in C++. Also: $ g++ -o programm.c programm Die Dateiendung sollte dann von `.c' auf `.cpp' oder auch `.cc' geaendert werden.
Ich bin selbst Laie was den gcc angeht. Wie kann ich dem gcc sagen, daß er das o.g. Verzeichnis miteinbeziehen soll?
Dein Ansatz war schon richtig, folgendes wuerde funktionieren: $ gcc -W -Wall -lstdc++ -o test test.cpp Besserer (bzw. `modernerer') Stil waere: #include <iostream> using namespace std; Oder (noch besser) immer explizit std:: aufzurufen, also z. B.: std::cout << "Test" << std::endl; Aber da Du ja Code von einer Zeitschrift kopiert hast waere es etwas muehsam alles zu aendern. HTH. Gruß, Bernhard -- "Mit dem Geist ist es wie mit dem Magen: Man kann ihm nur Dinge zumuten, die er verdauen kann." -- Winston Churchill
Hi, On Tue, 11 Feb 2003, Bernhard Walle wrote:
Dein Ansatz war schon richtig, folgendes wuerde funktionieren:
$ gcc -W -Wall -lstdc++ -o test test.cpp
Man beachte, das dieses Wissen bitte schnellstens verschuett geht. Zum C++-linken wird g++ genommen. Frueher konnte man mit gcc und nem -lstdc++ aushelfen, aber dies wird in Zukunft eventuell nicht mehr gehen. (Z.B. gibt's in GCC 3.3 ne libsubc++, die im Moement auch Teil von libstdc++ ist, und den Teil von C++ implementiert, der fuer freestanding environments ausreicht. Aber das kann sich jederzeit aendern, weshalb das blosse Linken gegen libstdc++ durchaus in Zukunft schief gehen kann) Ciao, Micha.
Am Die, 2003-02-11 um 21.43 schrieb Michael Matz:
Hi,
On Tue, 11 Feb 2003, Bernhard Walle wrote:
Dein Ansatz war schon richtig, folgendes wuerde funktionieren:
$ gcc -W -Wall -lstdc++ -o test test.cpp
Man beachte, das dieses Wissen bitte schnellstens verschuett geht. ACK.
Zum C++-linken wird g++ genommen. Frueher konnte man mit gcc und nem -lstdc++ aushelfen, aber dies wird in Zukunft eventuell nicht mehr gehen. Meines Wissens geht es schon mit.3.0 <= gcc < 3.3 nur noch in Ausnahmefällen, ob und wann hängt aber von der Zielarchitektur und vom individuellen Code ab.
Ralf
participants (4)
-
Bernhard Walle
-
Michael Matz
-
Ralf Corsepius
-
Ralph Müller