När ett C-program sammanställs genererar kompilatorn objektkod. Efter att ha genererat objektkoden anropar kompilatorn också linker. En av de viktigaste uppgifterna för linker är att göra kod för biblioteksfunktioner (t .ex. printf (), scanf (), sqrt (),..etc) tillgängliga för ditt program. En länkare kan utföra denna uppgift på två sätt, genom att kopiera koden för biblioteksfunktionen till din objektkod, eller genom att göra vissa arrangemang så att den fullständiga koden för biblioteksfunktioner inte kopieras, men görs tillgänglig vid körning.,

statisk länkning och statiska bibliotek är resultatet av att länkaren gör kopia av alla använda biblioteksfunktioner till den körbara filen. Statisk länkning skapar större binära filer, och behöver mer utrymme på disken och huvudminnet. Exempel på statiska bibliotek (bibliotek som är statiskt länkade) är, .en filer i Linux och .lib-filer i Windows.

steg för att skapa ett statiskt bibliotek låter oss skapa och använda ett statiskt bibliotek i UNIX eller UNIX som OS.
1. Skapa en C-fil som innehåller funktioner 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 också skapa flera filer i biblioteket.

2. Skapa en huvudfil för biblioteket

void fun(void);



3. Kompilera biblioteksfiler.

 gcc -c lib_mylib.c -o lib_mylib.o 

4. Skapa statisk bibliotek., Detta steg är att bunta flera objektfiler i ett statiskt bibliotek (se ar för detaljer). Utgången av detta steg är statiskt bibliotek.

 ar rcs lib_mylib.a lib_mylib.o 

5. Nu är vårt statiska bibliotek klart att använda. Vid denna tidpunkt kan vi bara kopiera lib_mylib.en annanstans att använda den. För demo ändamål, låt oss hålla biblioteket i den aktuella katalogen.

låt oss skapa ett drivrutinsprogram som använder ovan skapade statiska bibliotek.
1., Skapa en C-fil med huvudfunktionen

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



2., Kompilera drivrutinsprogrammet.

gcc -c driver.c -o driver.o

3. Länka det kompilerade drivrutinsprogrammet till det statiska biblioteket. Observera att-L. används för att berätta att det statiska biblioteket är i Aktuell mapp (se detta för detaljer om-L och-l alternativ).

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

4. Kör drivrutinsprogrammet

./driver fun() called from a static library

Följande är några viktiga punkter om statiska bibliotek.
1. För ett statiskt bibliotek extraheras den faktiska koden från biblioteket av länkaren och används för att bygga den slutliga körbara vid den punkt du sammanställer/bygger din applikation.,

2. Varje process får sin egen kopia av koden och data. När som i fallet med dynamiska bibliotek är det bara kod delas, data är specifika för varje process. För statiska bibliotek minne fotavtryck är större. Till exempel, om alla fönster Systemverktyg statiskt länkade, flera tiotals megabyte RAM skulle slösas bort för en typisk användare, och användaren skulle bromsas av en hel del personsökning.

3. Eftersom bibliotekskoden är ansluten vid kompileringstid har den slutliga körbara inga beroenden på biblioteket vid körning, dvs, inga extra laddningskostnader för körtid, det betyder att du inte behöver bära med dig en kopia av biblioteket som används och du har allt under din kontroll och det finns inget beroende.

4. I statiska bibliotek, när allt är paketerat i din ansökan, behöver du inte oroa dig för att klienten kommer att ha rätt bibliotek (och version) finns på deras system.

5. En nackdel med statiska bibliotek är, för någon förändring (uppgradering) i de statiska biblioteken, måste du kompilera huvudprogrammet varje gång.

6., En stor fördel med att statiska bibliotek föredras även nu ”är hastighet”. Det kommer inte att finnas någon dynamisk fråga om symboler i statiska bibliotek. Många produktionslinje programvara använder statiska bibliotek även idag.

dynamisk länkning och dynamiska bibliotek dynamisk länkning kräver inte att koden ska kopieras, det görs genom att bara placera namnet på biblioteket i binärfilen. Den faktiska länkningen händer när programmet körs, när både binärfilen och biblioteket är i minnet. Exempel på dynamiska bibliotek (bibliotek som är länkade vid körning) är,. så i Linux och .dll i Windows.,

Vi kommer snart att täcka fler punkter på dynamiska bibliotek och steg för att skapa dem.

den här artikeln sammanställs av Abhijit Saha och granskas av GeeksforGeeks team. Skriv gärna kommentarer om du hittar något felaktigt, eller om du vill dela mer information om ämnet som diskuteras ovan.

uppmärksamhet läsare! Sluta inte lära dig nu. Få tag på alla viktiga CS-Teorikoncept för Sde-intervjuer med CS-Teorikursen till ett studentvänligt pris och bli industrin redo.

artikel taggar:
öva taggar:

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *