Willkommen im Forum!
hym hat geschrieben:1. Woher weiß der Compiler, welche libstdc++ z.B. er nehmen soll?
In /usr/lib liegt derzeit eine libstdc++.so.6.0.8, der gcc-3.4.4 hat bei der Installation eine libstdc++.so.6.0.3 erzeugt, die jetzt unter /usr/local/gcc-3.4.4/lib/ liegt. Wenn ich jezt den 3.4.4 verwende, benutzt er dann automatisch "seine" lib?
ja, beim Link-Step gibt der gcc(g++) seine eigenen Libraries an
hym hat geschrieben:2. Was ist mit anderen Libs?
Ich benutze z.B. die libz, müßte ich die nicht auch mit dem 3.4.4er compilieren, damit das funzt?
Die libz ist keine C++ Library, daher ist das eigentlich jetzt nicht das beste Beispiel
Die libz Version mit der gelinkt wird, wird entweder über das installierte "-dev" Paket bestimmt, genauer gesagt durch den Link der von diesen Paketen erzeugt wird
Code: Alles auswählen
gms@debi:~$ ls -l /usr/lib/libz.so
lrwxrwxrwx 1 root root 9 2007-03-13 20:41 /usr/lib/libz.so -> libz.so.1
oder du mußt entsprechend selber herumfrickeln, den entsprechenden Link setzen und sicherstellen, daß auch die zugehörigen Header-Dateien für die Kompilierung herangezogen werden
Hättest du jetzt eine C++ Library als Beispiel genommen, dann wird im allgemeinen empfohlen, daß die ABI's nicht gemixt werden. Daher solltest du auch eine Neukompilierung der Library in Betracht ziehen.
hym hat geschrieben:
p.s.: ich hab schon mal eine Installation durch "Link-Umbiegen" der Libraries total zerschossen. Das muß nicht nochmal sein

das kommt darauf an, welchen Link du umgebogen hast, obiger Link ist da völlig ungefährlich, der ist für die Ausführung der Programme nicht relevant, dort wird die versionierte Library herangezogen
Code: Alles auswählen
gms@debi:~$ ldd /usr/bin/dar | grep libz
libz.so.1 => /usr/lib/libz.so.1 (0xb7c44000)
meistens und auch hier verbirgt sich aber unter "libz.so.1" auch wiederum ein Link und den umzubiegen, kann durchaus zu gröberen Problemen führen
Code: Alles auswählen
gms@debi:~$ ls -l /usr/lib/libz.so.1
lrwxrwxrwx 1 root root 13 2007-03-12 17:50 /usr/lib/libz.so.1 -> libz.so.1.2.3
Gruß
gms
[edit]
Ich habe dir hier auch noch den Link zu "C++ Standard Library ABI" herausgesucht:
http://gcc.gnu.org/onlinedocs/libstdc++/abi.html
wenn du nicht zu sehr ins Detail gehen möchtest, für dich wird es hauptsächlich unter "Testing Multi-ABI binaries" und vorallem "Outstanding Issues" interessant
[/edit]