Så vidt jeg forstår er de biblioteker, men hva er forskjellen mellom de to?
Kommentarer
- Relatert innlegg – Hva ' er forskjellen mellom .so, .la og .a bibliotek filer?
Svar
A .a
filen er et statisk bibliotek, mens en .so
-fil er et delt objekt (dynamisk) bibliotek som ligner på en DLL på Windows. Det er detaljert informasjon om forskjellene mellom de to på denne siden .
Kommentarer
-
.a
kan bare inkluderes som en del av et program under kompilering..so
' s kan " importeres " mens et program lastes inn. - hva står .a for?
- @hfrmobile A står for arkiv – et statisk bibliotek er en samling av objektfiler opprettet ved hjelp av
ar
verktøyet. Mer info her
Svar
Som en følge er en .a-fil et «ar» -arkiv. Ikke ulikt et tar-arkiv, den lagrer .o eller objekt filer, slik at de kan trekkes ut av arkivet og kobles til et program, blant annet. Du kan bruke ar til å lagre andre filer hvis du vil. / p>
Du kan få en oversikt over medlemmene i en ar-fil med parameteren -t, for eksempel:
ar -t /usr/lib/libc.a
En .so-fil er en «delt objekt» -fil, og har mye mer informasjon tilgjengelig for linkeren, slik at medlemmer kan kobles til et lasteprogram så raskt som mulig.
Prøv for eksempel:
objdump -T /lib/libc-2.11.1.so
(eller hvilken versjon av libc.so du har i / lib-katalogen din.) Vær oppmerksom på at en .so-fil også kan inneholde et koblingsskript som styrer den for å finne fil andre steder, eller bruk noe annet.
Interessant, en .so-fil kan også være et fullverdig program. For eksempel å prøve å kjøre /lib/libc.so.6 . (Dessverre ser ikke denne siste delen ut til å fungere på mer moderne systemer. Ikke at det er et stort tap.)
Kommentarer
- Skrivfeil . du mener å skrive
ar -t /usr/lib/libc.a
. Egentlig synes-
ikke ' t å være nødvendig i dette tilfellet. Også/lib/libc.so.6.
skriver bare ut noe. Jeg vet ikke ' om jeg vil kalle det enfull fledged program
. - Det ' et fullverdig program i den forstand at det har et hovedsymbol for exec å finne.
- Du kan også kjøre
ldd
på .so ' s, og det vil vise deg hvilke andre biblioteker den bruker. Statisk kommer tilbake med en melding om at den ' ikke er et dynamisk bibliotek.