Når et C-program er utarbeidet, kompilatoren genererer objekt kode. Etter generere objektkode, kompilatoren også påkaller linker. En av de viktigste oppgavene for linker er å gjøre etiske bibliotek funksjoner (f.eks printf(), scanf(), sqrt(), ..etc) som er tilgjengelige i programmet. En linker kan utføre denne oppgaven på to måter, ved å kopiere koden av bibliotek-funksjonen til objektet-koden, eller ved å gjøre noen avtaler, slik at den fullstendige koden av bibliotek-funksjoner er ikke kopiert, men gjort tilgjengelig på kjøre-time.,
Statisk Linking og Statisk Bibliotek er resultatet av linker å lage kopi av alle brukte biblioteket funksjonene til den kjørbare filen. Statisk Linking skaper større binære filer, og trenger mer plass på disken og hovedminne. Eksempler på statiske bibliotek (bibliotek som er statisk linket) er, .en-filer i Linux og .lib-filer i Windows.
Trinn for å opprette en statisk bibliotek La oss opprette og bruke en Statisk Bibliotek i UNIX-eller UNIX-lignende OS.
– 1. Lage en C-fil som inneholder funksjoner i biblioteket.,div>
#include <stdio.h>
void
fun(
void
)
{
printf
(
"fun() called from a static library"
);
}
We have created only one file for simplicity., Vi kan også opprette flere filer i biblioteket.
2. Lage en header-filen for biblioteket
void
fun(
void
);
3. Kompilere bibliotek-filer.
gcc -c lib_mylib.c -o lib_mylib.o
4. Opprette statisk bibliotek., Dette trinnet er å pakke flere objekt-filer i en statisk bibliotek (se ar for detaljer). Resultatet av dette trinnet er statisk bibliotek.
ar rcs lib_mylib.a lib_mylib.o
5. Nå er vår statisk bibliotek er klar til bruk. På dette punktet kunne vi bare kopiere lib_mylib.et annet sted til å bruke det. For demo formål, la oss holde biblioteket i den gjeldende katalogen.
La oss lage en driver programmet som bruker over opprettet statisk bibliotek.
– 1., Lage en C-fil med den viktigste funksjonen
#include "lib_mylib.h"
void
main()
{
fun();
}
2., Kompilere driver programmet.
gcc -c driver.c -o driver.o
3. Link kompilert driver programmet til statisk bibliotek. Vær oppmerksom på at-L. brukes til å fortelle at den statiske bibliotek er i gjeldende mappe (Se denne for detaljer i -L -l-alternativer).
gcc -o driver driver.o -L. -l_mylib
4. Kjør driver programmet
./driver fun() called from a static library
her er noen viktige punkter om statisk bibliotek.
– 1. For en statisk bibliotek, selve koden er hentet fra bibliotek av linker og brukt til å bygge den endelige kjørbar på det punktet du lage/bygge din søknad.,
2. Hver prosess får sin egen kopi av kode og data. Der som i tilfelle av dynamiske biblioteker det er bare kode delt, data som er spesifikke for hver prosess. For statiske bibliotek minne fotavtrykk er større. For eksempel, hvis hele vinduet system verktøy var statisk lenket, flere titalls megabyte RAM ville være bortkastet for en vanlig bruker, og brukeren vil bli bremset av mye av personsøker.
3. Siden biblioteket koden er koblet på kompilere tid, den siste kjørbare har ingen avhengigheter på biblioteket på kjøre-time dvs., ingen ekstra run-time legge kostnader, det betyr at du ikke trenger å bære med en kopi av biblioteket som brukes, og du har alt under kontroll, og det er ingen avhengighet.
4. I statisk biblioteker, når alt er pakket inn din søknad, trenger du ikke å bekymre deg for at klienten skal ha rett til biblioteket (og-versjonen) er tilgjengelig på deres system.
5. En ulempe av statisk bibliotek er, for noen endring(opp-gradering) i den statiske bibliotek, må du kompilere den viktigste programmet hver gang.
6., En stor fordel med statisk bibliotek blir foretrukket selv nå «er speed». Det vil ikke være dynamisk spørring av symboler i statisk bibliotek. Mange produksjon linje programvare bruke statiske bibliotek selv i dag.
Dynamisk linking og Dynamiske Biblioteker Dynamisk Linking krever ikke kode for å bli kopiert, for det er gjort ved bare å plassere navnet på biblioteket i binær fil. Den faktiske knytte skjer når programmet blir kjørt, når både den binære filen og biblioteket er i minnet. Eksempler på Dynamiske biblioteker (biblioteker som er koblet på kjøre-tid) er, .så i Linux og .dll-filen i Windows.,
Vi vil snart være som dekker flere poeng på Dynamiske Biblioteker og fremgangsmåten for å opprette dem.
Denne artikkelen er utarbeidet av Abhijit Saha og anmeldt av GeeksforGeeks team. Vennligst skriv kommentarer hvis du finner noe feil, eller du ønsker å dele mer informasjon om temaet er diskutert ovenfor.
Oppmerksomhet leser! Ikke slutte å lære nå. Få tak i alle de viktige CS Teori konsepter for SDE intervjuer med CS Teori Kurs hos student-vennlig pris og blitt industri klar.