Når et C-program er kompileret, genererer compileren objektkode. Efter generering af objektkoden påberåber kompilatoren også linker. En af de vigtigste opgaver for linker er at gøre kode bibliotek funktioner (f .eks printf(), scanf(), s .rt (),..osv.) til rådighed for dit program. En linker kan udføre denne opgave på to måder ved at kopiere koden til biblioteksfunktionen til din objektkode eller ved at arrangere nogle arrangementer, så den komplette kode for biblioteksfunktioner ikke kopieres, men stilles til rådighed ved kørsel., statisk sammenkædning og statiske biblioteker er resultatet af, at linkeren kopierer alle brugte biblioteksfunktioner til den eksekverbare fil. Statisk Sammenkædning skaber større binære filer, og har brug for mere plads på disken og hovedhukommelsen. Eksempler på statiske biblioteker (biblioteker, der er statisk forbundet) er,.a filer i Linu and og .lib filer i Windowsindo .s.

trin for at oprette et statisk bibliotek lad os oprette og bruge et statisk bibliotek i uni.eller UNI. som OS.
1. Opret en C-fil, der indeholder funktioner i dit bibliotek.,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å oprette flere filer i biblioteket.

2. Opret en header-fil til bibliotek

void fun(void);



3. Kompilere bibliotek filer.

 gcc -c lib_mylib.c -o lib_mylib.o 

4. Opret statisk bibliotek., Dette trin er at samle flere objektfiler i et statisk bibliotek (se ar for detaljer). Udgangen af dette trin er statisk bibliotek.

 ar rcs lib_mylib.a lib_mylib.o 

5. Nu er vores statiske bibliotek klar til brug. På dette tidspunkt kunne vi bare kopiere lib_mylib.et andet sted at bruge det. Til demo formål, lad os holde biblioteket i den aktuelle mappe.

lad os oprette et driverprogram, der bruger ovenstående oprettede statiske bibliotek.
1., Opret en C-fil med en main funktion

#include "lib_mylib.h"
void main()
{
fun();
}



2., Udarbejde driver program.

gcc -c driver.c -o driver.o

3. Link det kompilerede driverprogram til det statiske bibliotek. Bemærk ,at-L. bruges til at fortælle, at det statiske bibliotek er i den aktuelle mappe (se dette for detaljer om-L og-l-indstillinger).

gcc -o driver driver.o -L. -l_mylib

4. Kør driverprogrammet

./driver fun() called from a static library

Følgende er nogle vigtige punkter om statiske biblioteker.
1. For et statisk bibliotek udvindes den faktiske kode fra biblioteket af linkeren og bruges til at opbygge den endelige eksekverbare på det punkt, du kompilerer/bygger din applikation.,

2. Hver proces får sin egen kopi af koden og dataene. Hvor som i tilfælde af dynamiske biblioteker er det kun kode deles, data er specifikke for hver proces. For statiske biblioteker hukommelse fodspor er større. For eksempel, hvis alle vinduessystemværktøjer var statisk forbundet, ville flere titus megabyte RAM blive spildt for en typisk bruger, og brugeren ville blive bremset af en masse Personsøgning.

3. Da bibliotekskoden er tilsluttet på kompileringstidspunktet, har den endelige eksekverbare ingen afhængigheder af biblioteket på kørselstidspunktet, dvs., ingen ekstra omkostninger til indlæsning af køretid, det betyder, at du ikke behøver at medbringe en kopi af biblioteket, der bruges, og du har alt under din kontrol, og der er ingen afhængighed.

4. I statiske biblioteker, når alt er bundtet ind i din ansøgning, du behøver ikke at bekymre sig, at klienten vil have den rigtige bibliotek (og version) til rådighed på deres system.

5. En ulempe ved statiske biblioteker er, for enhver ændring (opgradering) i de statiske biblioteker, skal du genkompilere hovedprogrammet hver gang.

6., En stor fordel ved statiske biblioteker foretrækkes selv nu “er hastighed”. Der vil ikke være nogen dynamisk forespørgsel om symboler i statiske biblioteker. Mange produktionslinjesoft .are bruger statiske biblioteker selv i dag.dynamisk sammenkædning og dynamiske biblioteker dynamisk Sammenkædning kræver ikke, at koden kopieres, det gøres ved blot at placere bibliotekets navn i den binære fil. Den faktiske sammenkædning sker, når programmet køres, når både den binære fil og biblioteket er i hukommelsen. Eksempler på dynamiske biblioteker (biblioteker, der er forbundet på run-time) er,. so I Linu .og.dll i Windowsindo .s.,

Vi dækker snart flere punkter på dynamiske biblioteker og trin til at oprette dem.

Denne artikel er udarbejdet af Abhijit Saha og gennemgået af GeeksforGeeks team. Skriv venligst kommentarer, hvis du finder noget forkert, eller du vil dele mere information om emnet diskuteret ovenfor.

opmærksomhed læser! Stop ikke med at lære nu. Få fat i alle de vigtige CS teori begreber til Sde intervie .s med CS teori kursus på en student-venlige pris og blive industri klar.

Artikel Tags :
Praksis Tags :

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *