On Sun, Jan 26, 2003 at 01:03:58AM +0100, Falk Mölle wrote:
Huhu
Hallo
main.o: In function `do_output': /home/falk/wineX/wine/tools/winebuild/main.c:141: undefined reference to `atexit' collect2: ld returned 1 exit status make[2]: *** [winebuild] Error 1 make[2]: Leaving directory `/home/falk/wineX/wine/tools/winebuild' make[1]: *** [winebuild] Error 2 make[1]: Leaving directory `/home/falk/wineX/wine/tools' make: *** [tools] Error 2
Was ist da faul? Hat jemand ne Idee?
Fuer Nicht-Programmierer mal ein Einstieg im Fehlerlesen:
Der Fehler hier liegt am Linker, d.h. nachdem der Quellcode vom Compiler geparsed, fuer gut gefunden und compiliert wurde, werden im zweiten Schritt (dem Linken) die ganzen entstandenen object files zu einem ausfuehrbaren Programm bzw. Bibliothek zusammengemixt. Dabei prueft der Linker (ld), ob Funktionen, die aus externen Bibliotheken aufgerufen wurden, auch wirklich existieren und leitet entsprechende Aufrufe auf diese Bibliotheken um, der Compiler hat vorher naemlich nur geprueft, ob die Syntax der Funktionsaufrufe stimmt. In deinem Fall stellt er hier ploetzlich fest, dass er die Funktion nicht finden kann (daher "undefined reference").
Loesung: Wenn der gcc linken soll, muss man ihm sagen, in welchen Bibliotheken er suchen soll mittels "-l<NameDerBibliothek>", z.B. "lqt" fuer qt. So eine Angabe fehlt hier. Also ruestest du dich mit einem Editor deiner Wahl aus, gehst in das Verzeichnis /home/falk/wineX/wine/tools/winebuild und editierst die Datei "Makefile". Hier suchst du jetzt nach einer Variablen namens "LIBS", "WINE_LIBS" oder so aehnlich. Ein heisser Tip dabei ist, dass dahinter irgendwelche "-l<Bibliothek>" auftauchen. Dort schreibst du jetzt ein "-lc" dazu, damit auch die C-Standardbibliothek eingebunden wird.
Wenn so etwas passiert, ist das allerdings kein gutes Zeichen. Sollte das weiterhin nicht klappen, hol dir lieber die letzte stable Version. CVS ist zwar immer "bleeding edge", aber da dort auch entwickelt wird, kann das durchaus mal instabil bzw. nicht-compilierbar sein.
Mit freundlichen Grüßen
Falk Mölle
Ulf