ich habe vor kurzem RedHat Linux 5.1 installiert. Ausgeliefert wird das
System mit dem egcs Compiler anstelle des gcc bzw g++. Ich habe jetzt
Probleme beim Übersetzen der Programme. Selbst das folgende triviale
Programm bereitet Probleme:
#include <iostream.h>
int main() {
cout << "Hello world! \n";
return 0;
}
Gestartet habe ich den Compilier-Vorgang mit:
egcs HelloWorld.cc
Als Fehlermeldung erhalte ich dann:
/tmp/cca005751.o: In function `main':
/tmp/cca005751.o(.text+0x9): undefined reference to `cout'
/tmp/cca005751.o(.text+0xe): undefined reference to
`ostream::operator<<(char const *)'
collect2: ld returned 1 exit status
Wenn ich den Code nur kompiliere und nicht linke (mit egcs -c
HelloWorld.cc), dann wird problemlos ein Object-File erstellt. Dann
jedoch klappt das Linken nicht. Die Fehlermeldung nach einem ld
HelloWorld.o lautet dann:
ld: warning: cannot find entry symbol _start; defaulting to 08048074
HelloWorld.o: In function `main':
HelloWorld.o(.text+0x9): undefined reference to `cout'
HelloWorld.o(.text+0xe): undefined reference to
`ostream::operator<<(char const *)'
Wenn ich den Kompilier-Vorgang mit dem g++ (läßt sich bei mir auch
aufrufen) starte, dann bekomme ich folgende Fehlermeldung:
/usr/bin/ld: warning: libm.so.6, needed by /usr/lib/libstdc++.so,
may conflict with libm.so.5
/usr/bin/ld: warning: libc.so.6, needed by /usr/lib/libstdc++.so,
may conflict with libc.so.5
In diesem Fall wird übrigens ein a.out File erstellt. Bei der Ausführung
bekomme ich jedoch ein Segmentation fault (core dumped).
Ach ja, das kleine Programm läßt sich einwandfrei unter MS Visual C++
sowie Borland C++ kompilieren. Außerdem gibt es keinerlei Probleme mit
dem g++ auf einer Alpha unter Digital UNIX V4.0D (Rev. 878).
Was mache ich denn jetzt eigentlich falsch???
Ciao
Chris
ciao
Chris