Re: Re: Vafan?

2002-08-20 tråd Peter Mathiasson
On Tue, Aug 20, 2002 at 10:50:29AM +0200, Fredrik Persson wrote:
  On Tue, Aug 20, 2002 at 12:52:33AM +0200, Thomas wrote:
   Gällande det första problemet så löste Esaia det på #debian.se genom att
   köra:
   ln -s /usr/lib/libvorbisfile.so.3 /usr/lib/libvorbisfile.so.0
  
  Jag skulle tippa på att det finns en anledning till att de bytta SONAME.
  Installera paketet libvorbisfile3.
 
 Av rent intresse, vad är SONAME?

Namnet på biblioteket som loadern använder när den skall resolva
symbolnamn.

$ ldd /bin/ld
librt.so.1 = /lib/librt.so.1 (0x4001a000)
libc.so.6 = /lib/libc.so.6 (0x4002b000)
libpthread.so.0 = /lib/libpthread.so.0 (0x40146000)
/lib/ld-linux.so.2 = /lib/ld-linux.so.2 (0x4000)
libc.so.6, librt.so.1 etc. är SONAME.

Anledning att du byter SONAME är att biblioteken inte är binär
kompatibla på ett eller annat vis. Alltså fungerar med stor sanolikhet
inte ett program som är länkat mot libvorbisfile0 med libvorbisfile3.
Detta är givetvis beroende på vilken del av ABI som används av
programmet i fråga.

Däremot är det full möjligt att ha både libvorbisfile0 och
libvorbisfile3 installerade samtidigt så att äldre program som är
kompilerade mot libvorbisfile0 fortfarande fungerar.

Hoppas det blev något klarare.

-- 
Peter Mathiasson, peter at mathiasson dot nu, http://www.mathiasson.nu
GPG Fingerprint: A9A7 F8F6 9821 F415 B066 77F1 7FF5 C2E6 7BF2 F228


pgpl1fl9MhSP2.pgp
Description: PGP signature


Re: Re: Vafan?

2002-08-20 tråd Peter Mathiasson
On Tue, Aug 20, 2002 at 11:27:20AM +0200, Fredrik Persson wrote:
  Anledning att du byter SONAME är att biblioteken inte är binär
  kompatibla på ett eller annat vis. Alltså fungerar med stor sanolikhet
  inte ett program som är länkat mot libvorbisfile0 med libvorbisfile3.
  Detta är givetvis beroende på vilken del av ABI som används av
  programmet i fråga.
 
 Där dök den upp igen! Denna märkliga akronym, ABI, som dök upp i Min 
 Verklighet för ett litet tag sedan när jag såg att den senaste versionen av 
 gcc hade... öh... ändrat något som hade med ABI att göra. Det var för svårt 
 för mig att förså vad det var... ARGH! Vad jag känner mig dum ibland.

ABI = Application Binary Interface.
Två bibliotek som är kompatibla på ABI nivå går att byta ut mot varandra
utan att kompilera om program som länkar mot dem. Detta gäller ofta för
mindre uppgraderingar för bibliotek. T.ex är Qt 3.0.1 ABI kompatibelt
med Qt 3.0.2.

GCC har ändrat C++ ABIn mellan varje release på senaste, och skall så
göra även för 3.2.

Förresten, jag prenumererar på listan och vill _inte_ ha en kopia på
breven hit.
Ett tips, konfigurera din MUA att respektera Mail-Followup-To, om det är
möjligt vill säga.

-- 
Peter Mathiasson, peter at mathiasson dot nu, http://www.mathiasson.nu
GPG Fingerprint: A9A7 F8F6 9821 F415 B066 77F1 7FF5 C2E6 7BF2 F228


pgpU2xdu1jfFv.pgp
Description: PGP signature