Archiv verlassen und diese Seite im Standarddesign anzeigen : gcc <> g++??
Hey Yo Hoh!
Kann man ein c++-Programm auch mit "gcc"-Befehl compilieren oder ist dafuer "g++" noetig?
Falls auch mit gcc moeglich - gibts dennoch Unterschiede?
danke
cu
kamome
tuxipuxi
17-06-2003, 13:49
hi,
GCC heisst gnu compiler collection, beinhaltet auch noch compiler fuer andere sprachen.
es gibt auch wie du weisst eine "gcc" executable die fuer C code zustaendig ist. c++ kann nur mit "g++" kompiliert werden.
warum das so ist weiss ich nicht genau, ich glaube das hat mit dem linker zu tun.
gruss,
tuxipuxi.
Hi,
bei GNU steht folgendes:
g++ is a program that calls GCC with the default language set to C++, and automatically specifies linking against the C++ library.
Unter default language settings versteht man den Parameter '-x c++' und den Parameter '-lstdc++' zum Linken der C++ Lib.
Hat dein Sourcecode eine der Endungen .C, .cc, .cpp, .c++, .cp, oder .cxx dann geht gcc automatisch davon aus, dass es C++ Code ist setzt die oben genannten Optionen obwohl man gcc statt g++ ruft.
Schreibt man allerdings C++ in ein .c File, und ruft 'gcc -o test test.c' so bekommt man jede Menge Fehler. Schreibt man 'g++ -o test test.c' so wird der C++ Sourcecode richtig übersetzt. Alternativ kann man auch 'gcc -x c++ -lstdc++ -o test test.c' schreiben und es wird richtig übersetzt.
Hoffe etwas Klarheit geschaffen zu haben.
Gruß
almoeli
Hallo,
mit dem Linken hat es schon zu tun. g++ linkt automatisch für c++-Programme benötigte Libs dyn. dazu. gcc macht dies nicht implizit.
Folgender Artikel beschreibt, was zu tun ist, wenn man C++-Programme mit dem gcc übersetzen will.
http://www.pl-berichte.de/t_system/c++-libc.html
Viele Grüße, Tilo
Hey Yo Hoh!
Danke Euch fuer die Antworten!
Zwischen dem "obwohl man gcc statt g++ ruft" von almoeli und dem von riemer genannten Artikel sehe ich einen kleinen Widerspruch. Allerdings waere es moeglich, dass man frueher "g++" verwenden musste, waehrend das bei aktuellen Versionen des gcc nicht mehr noetig ist? - Hatte vorhin die Moeglichkeit, das ganze auf einer Solaris Workstation zu testen - schlauerweise habe ich mir die gcc-Version nicht angeguckt (>_<) Scheint mir aber insgesamt keine sehr aktuell gehaltene Installation zu sein, vermutlich also irgendwas 2.x.x-maessiges. Jedenfalls bekam ich mit "gcc" jede Menge Fehler, mit "g++" ging alles gut.
Nunja, zumindest kann es also einen Unterschied machen - nochmal danke
cu
kamome
Hi,
ich merk schon, die Diskussion geht ins Detail. Meine Behauptung "obwohl man gcc statt g++ ruft" basiert darauf, dass du ein einziges Sourcefile direkt in ein Binary kompilieren läßt. Verwendest du den -c Parameter, um eine .o zu erzeugen, dann mußt du später beim linken mit dem gcc explizit das -lstdc++ mit angeben, weil der gcc ja nicht weiß, das dein .o File ursprünglich mal ein C++ File war.
Der Artikel auf ProLinux behandelt das Thema, ob man C++ Programme übersetzen kann und diese Programme später nur die libc verwenden. Dabei verliert man jedoch eine Menge der Eigenschaften von C++ (kein new, delete, keine Streams cout usw.)Das der gcc sowohl C als auch C++ Code übersetzen kann geht auch aus dem Artikel hervor.
Gruß
almoeli
anda_skoa
18-06-2003, 10:02
Original geschrieben von kamome
Zwischen dem "obwohl man gcc statt g++ ruft" von almoeli und dem von riemer genannten Artikel sehe ich einen kleinen Widerspruch.
Kein Widerspruch.
gcc "erkennt" anhand der Dateiendung eine C++ Datei und kann diese auch kompilieren, nur wird nicht gegen C++ Bibliotheken gelinkt.
Bei Schritten mit -c ist das also kein großer Unterschied, beim letzen Schritt (Linken) sehrwohl.
Ansich ist es üblich, für C++ Code den C++ Compiler zu verwenden, weil viele C Compiler keinen automatischen C++ Mode haben.
Für GCC wäre das g++
Ciao,
_
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.