Reihenfolge der Bibliotheken beim Linken
-
Moin, Moin...
Ich habe ein Beispielprogramm aus dem Internet gezogen und übersetzt:
gcc -o xmenu xmenu.c -lXt -lXm
Nach dem Start des Programms erhalte ich den Fehler 'Segmentation Fault'. Dann habe ich beim Übersetzen die Reihenfolge der Bibliotheken geändert:
gcc -o xmenu xmenu.c -lXm -lXt
Siehe da, es lief. Daraus leitet sich natürlich die Frage ab, warum die Reihenfolge der Bibliotheken wichtig ist.
Danke im voraus...
[ Dieser Beitrag wurde am 05.03.2003 um 11:26 Uhr von Kal El editiert. ]
-
ich kann mir das nur so erklären, dass Xt Funktionen aus Xm einbindet.
Wenn der Linker nun in Xt einen Funktionsaufruf findet, schaut er in seiner Tabelle nach, ob diese Funnktion existiert. tut sie dasnicht, ist das für ihn ein Fehler.Ist Xm schon eingebunden - ergo bearbeitet, kennt der Linker die Funktion und kann sie reinlinken.
cYa
DjR
-
libXm wird wohl eher Funktionen aus libXt verwenden. Diese werden nur dann gefunden, wenn libXt anschließend durchsucht wird. Was vorher war und nicht gebraucht wurde, hat der Linker vergessen.
(--whole-archive behebt das Problem auch, bläht aber die Datei auf)