W�re cool, wenn es jemanden gibt der da Bescheid wei�...
Danke...
MfG
Tobias Kretschmer
Das ist jedenfalls falsch.
> Meine Frage w�re wie man statische
> Libs einbindet mit ar und ranlib und wie die Syntax in gcc bzw. g++
> daf�r aussieht.
> (Fehlermeldung: undefined reference to ...)
Dafuer muss es einen anderen Grund geben.
> Mir ist zu Ohren gekommen, da� man unter Linux nur die Bibliotheken der
> Form "*.so" mit dem -l einbindet. Meine Frage w�re wie man statische
> Libs einbindet mit ar und ranlib und wie die Syntax in gcc bzw. g++
> daf�r aussieht.
> (Fehlermeldung: undefined reference to ...)
Guckst Du hier:
http://wiki.linuxquestions.org/wiki/Static_linking
Gru�
Reinhard
--
2.6.30-gentoo-r5 Xorg 1.5.3 KDE 4,3.0
Asus M2A-VM AMD Athlon X2 4450e Nvidia 7300LE
Da hast du ein paar Dinge durcheinandergeworfen.
Die Methode mit -l und -L ist nur eine spezielle Art, Eingabedateien zu
spezifizieren. Du könntest also z.B. schreiben:
gcc *.o /lib/libm.so
statt
gcc *.o -lm
Wenn du jetzt -l benutzt, dann kommt es auf die Einstellung des gcc
drauf an, welche Lib er benutzt: Standardmäßig sucht er dann nach Shared
Libs, indem er an den übergegebenen Namen vorne ein "lib" und hinten ein
".so" anfügt, um anschließend den Bibliothekssuchpfad durchzugehen, ob
es dort so eine Datei gibt.
Man kann aber auch als erstes Argument "-static" übergeben, wodurch er
nach statischen Libs suchen wird.
Wenn du also eine Statische Lib einbinden willst, dann geht das entweder
mit
gcc -static *.o -lNAME #evtl. noch -L, wenn die Lib nicht im Suchpfad
#liegt.
oder mit
gcc *.o /pfad/zu/libNAME.a
Soviel dazu.
ar und ranlib haben damit nix zu tun. Die sind dazu da, solche Libs zu
erstellen. Angenommen, alle *.o-Dateien des momentanen Verzeichnisses
sollen zu libNAME.a werden, geht entweder
ar r libNAME.a *.o
ranlib libNAME.a
oder
ar rs libNAME.a *.o
HTH,
Markus
--
GUI - ein Hintergrundbild und zwölf XTerms
vim -c "exec \"norm iwHFG#NABGURE#IVZ#UNPXRE\"|%s/#/ /g|norm g??g~~"