PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : g++ / ld / kde - Probleme



Cubus
14-12-1999, 19:32
Hallo Leute,
ich bin ziemlich neu im Linux-Geschaeft (3 Monate, z.Z. SuSE 6.2). Bis jetzt habe ich unter Windows (ich weiss, ist a-baeh) und Borland programmiert, da musste ich mich um Probleme mit Linker etc. nie kuemmern. Aber jetzt moechte ich gerne unter Linux ein neues Projekt aufsetzen und habe mir den KDeveloper geholt und versucht, das Hello-World - Programm zum laufen zu kriegen.
Tja, zunaechst sagte mir KDeveloper bei der Installation, dass g++ keine executabel Files erstelle kann. Beim Versuch, main auf Kommandozeile zu compilieren und zu linken, kam der Fehler, dass ld die Datei crtbegin.o nicht findet. In yast habe ich dann nachgesehen, ob ich alles installiert habe (meiner unmassgaeblichen Meinung nach ja). Ich habe im Paket egcs zwar die Datei crtbegin.o gefunden, aber ich moechte ja unter g++ compilieren.

Dann wollte ich mir die Fehlermeldung nochmal auf den Bildschirm holen und habe einen neue Lauf gestartet:
g++ -I/usr/include/g++ main.cpp -o main.o

Und da gings erst richtig los mit Fehlermeldungen:
In file included from main.cpp:23:
/usr/include/stdlib.h:80: syntax error before `('
In file included from main.cpp:23:
/usr/include/stdlib.h:356: type specifier omitted for parameter
/usr/include/stdlib.h:356: parse error before `)'

usw.....

Diese Meldungen brachte uebrigens auch KDevolper beim Compilieren. Die einzige Option, die ich eingegeben habe war: -I/usr/include/g++. Ich kann mir aber kaum vorstellen, dass die Standard-Includes feherhaft sind.
Meine Schlussfolgerung: Ich mache was falsch.

ABER WAS??

Fuer Deine/Eure Antworten vielen Dank im voraus,

Cubus

docdooley
15-12-1999, 09:10
Hi,

was kommt denn wenn Du den Includepfad weglaesst ??
Ist der Code lang, oder kannst ihn hier mal posten ?
Den Standardinclude muss man normalerweise nie angegeben ...

docdooley

Cubus
16-12-1999, 19:49
Hier der "Code":

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <iostream.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
cout << "Hello, World!" << endl;

return EXIT_SUCCESS;
}



Wenn ich die Include-Option weglasse, findet g++ die iostream.h nicht.
Allerdings habe ich gehört, es soll an fehlenden oder falsche links liegen. Welche allerdings konnte mir bis jetzt keiner sagen.

[Diese Nachricht wurde von Cubus am 16. Dezember 1999 editiert.]

Cubus
16-12-1999, 20:43
Ich habe gerade mal den egcs-Compiler installiert und danach ein neues
KDevolper-Projekt erzeugt. Und siehe da, auf einmal kann KDevoloper
executabel Files erzeugen, die Compilierung, das Linken und Debuggen
klappt ganz hervorragend und alles ist groovy. Aber trotzdem bleibt die Frage: was war da falsch? Der g++-Compiler hat das gleiche Erstelldatum wie gcc (Erstinstallation). Anscheinend ist g++ auf include-Dateien von egcs angewiesen!? Oder hat hier SuSE einen Fehler gemacht? I don't know.

In jedem Falle: es läuft, damit bin ich erstmal zufrieden.

Vielen Dank für die Anregung,

Cubus

Kominski
16-12-1999, 23:35
Hallo Cubus,

Deine #include Anweisungen werden hier als HTML-Tags interpretiert
und in diesem Fall einfach verschluckt.

Aber wenn man sich den HTML-Source anschaut, sieht man sie ;-)

Ciao,
Martin