diwic skrev:Men antag nu att jag länkar dynamiskt mot "libSDL.so". Då antar jag att texten "libSDL.so" hamnar nånstans i min kompilerade fil. Sen skickar jag filen till en kompis, som inte har dev-paketet installerat. När han försöker köra min fil så borde han få ett fel eftersom han inte har installerat symlänken "libSDL.so"...? Men så blir det ju inte (väl?), så var resonerar jag fel?
Nej, så blir det ju inte. Det är strängen "libSDL-1.2.so.0" som kommer finnas någonstans i binärfilen.
diwic skrev:Vad jag inte förstår är hur symlänken "libSDL.so" kan behövas när man länkar programmet men inte när man kör det? Det känns som om orsaken till de två symlänkarna (och att bara den ena finns i dev-paketet) kanske inte är direkt teknisk utan mer praktisk på något vis, men vilket?
Jag kanske ska vara mer tydlig...
libSDL-1.2.so.0.11.1 är den egentliga biblioteksfilen.
libSDL-1.2.so.0 är en symlänk som pekar på den egentliga filen. Det är den här symlänken den dynamiska länkningen sker mot när själva programmet sedan körs (strängen "libSDL-1.2.so.0" finns i binärfilen).
libSDL.so är också en symlänk som pekar på den egentliga filen. Den här symlänken behövs bara under själva kompileringen. Den tillåter dig att använda
-lSDL istället för att skriva in hela sökvägen (/usr/lib/libSDL-1.2.so.0.11.2).
Jag har för mig att jag har sett en hyfsat bra genomgång av detta någonstans. Jag återkommer om jag hittar den.