Archiv verlassen und diese Seite im Standarddesign anzeigen : Unklare Compilermeldung
BloodyBullet
12-11-2004, 15:06
Hallo,
ich bin ein wenig über eine Compilermeldung verwundert, wenn ich versuche ein Programm zu kompilieren.
Das ist die Fehlermeldung:
/tmp/ccSH92FN.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
Das ist der Code:
#include <stdio.h>
int main()
{
char i='-';
int v;
{
for (v=0; v>20; v=v++)
printf("%c",i);
}
return 0;
}
Weiß jemand mehr?
MfG
Wenn du die Schleife 20 mal durchlaufen lassen willst, dann muss sie so aussehen:
for( v=0; v<20; v++)
{
printf( "%c",i);
}Das wird wahrscheinlich den Fehler des Linkers nicht lösen.
Aber die Schleife ist dann zumindest richtig.
BloodyBullet
12-11-2004, 15:53
Wenn du die Schleife 20 mal durchlaufen lassen willst, dann muss sie so aussehen:
for( v=0; v<20; v++)
{
printf( "%c",i);
}Das wird wahrscheinlich den Fehler des Linkers nicht lösen.
Aber die Schleife ist dann zumindest richtig.
Das Problem löst es nicht, zumindest aber hast du recht; ich habe einen Tippfehler (>, statt <) gehabt.
Hat wer eine Lösung zum Problem?
MfG
Hat deine Datei eine C Endung (*.c), wenn du mit gcc kompilierst?
locus vivendi
12-11-2004, 16:32
wraith formuliert es als Frage, aber man kann sich nahezu sicher sein: Die Datei hat nicht eine Dateiendung für C Programme und der OP hat nicht "g++" oder "c++" angeworfen.
Dabei darf man nicht vergessen, dass Unix Dateisystem case-sensitive sind, und - unpraktischerweise - *.c für C-Programme, und *.C für C++-Programme steht
Zeig mal dei commandoline mit der du kompelierst.
peschmae
12-11-2004, 19:37
wraith formuliert es als Frage, aber man kann sich nahezu sicher sein: Die Datei hat nicht eine Dateiendung für C Programme und der OP hat nicht "g++" oder "c++" angeworfen.
Das macht aber hier nicht wirklich einen Unterschied - das Programm geht ja sowohl als C++ als als auch C d.h. mit gcc und g++
Ausserdem wäre die Fehlermeldung bei falscher Dateiendung etwas hilfreicher:
file not recognized: File format not recognized
collect2: ld gab 1 als Ende-Status zurück
Ich schaff es auf jeden Fall nicht das Programm zum nicht-funktionieren zu bringen.
MfG Peschmä
locus vivendi
13-11-2004, 11:07
Zitat:
Zitat von locus vivendi
wraith formuliert es als Frage, aber man kann sich nahezu sicher sein: Die Datei hat nicht eine Dateiendung für C Programme und der OP hat nicht "g++" oder "c++" angeworfen.
Das macht aber hier nicht wirklich einen Unterschied - das Programm geht ja sowohl als C++ als als auch C d.h. mit gcc und g++
Doch. Wenn der gcc ein C++ Programm übersetzt (ausser bei sehr einfachen Programmen), dann legt er in der zugehörigen Objektdatei ein undefiniertes Symbol namens "gxx_personality_v0" an. Um ein komplettes, lauffähiges Programm zu erzeugen muss deshalb die libstdc++ gelinkt werden, welche "gxx_personality_v0" definiert.
Ein weiteres Indiz für den Sachverhalt den wraith vermutete ist auch die Erwähnung der eh_frame Section in der Fehlermeldung. Diese Section ist für Exception Handling wichtig. Sie wird vom gcc aber nicht angelegt, wenn ein C Programm übersetzt wird.
Ich schaff es auf jeden Fall nicht das Programm zum nicht-funktionieren zu bringen.
Ist ganz einfach. Speicher den gezeigten Code in einer Datei die auf z.B. "cpp" endet und übersetze folgendermassen: "gcc <name>.cpp"
peschmae
13-11-2004, 16:01
Ach so geht das. Stimmt.
MfG Peschmä
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.