când un program C este compilat, compilatorul generează cod obiect. După generarea codului obiect, compilatorul invocă și linker. Una dintre principalele sarcini pentru linker este de a face codul de funcții de bibliotecă (de exemplu, printf (), scanf (), sqrt (),..etc) Disponibil pentru programul dvs. Un linker poate realiza această sarcină în două moduri, copiind codul funcției bibliotecă în codul obiect sau făcând unele aranjamente astfel încât codul complet al funcțiilor bibliotecii să nu fie copiat, ci pus la dispoziție în timpul rulării., legarea statică și bibliotecile statice sunt rezultatul copierii de către linker a tuturor funcțiilor bibliotecii utilizate în fișierul executabil. Legarea statică creează fișiere binare mai mari și necesită mai mult spațiu pe disc și memoria principală. Exemple de biblioteci statice (biblioteci care sunt legate static) sunt,.a fișiere în Linux și .fișiere lib în Windows.

pași pentru a crea o bibliotecă statică permiteți-ne să creăm și să folosim o bibliotecă statică în UNIX sau UNIX like OS.
1. Creați un fișier C care conține funcții în biblioteca dvs.,div>

#include <stdio.h>
void fun(void)
{
printf("fun() called from a static library");
}



We have created only one file for simplicity., De asemenea, putem crea mai multe fișiere în bibliotecă.

2. Creați un fișier antet pentru bibliotecă

void fun(void);



3. Compilați fișiere de bibliotecă.

 gcc -c lib_mylib.c -o lib_mylib.o 

4. Creați bibliotecă statică., Acest pas este de a PACHET mai multe fișiere obiect într-o bibliotecă statică (a se vedea AR pentru detalii). Rezultatul acestui pas este biblioteca statică.

 ar rcs lib_mylib.a lib_mylib.o 

5. Acum biblioteca noastră statică este gata de utilizare. În acest moment am putea copia doar lib_mylib.o altă parte să-l folosească. În scopuri demo, să păstrăm biblioteca în directorul curent.

să creăm un program de driver care utilizează biblioteca statică creată mai sus.
1., Creați un fișier C cu funcția principală

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



2., Compilați programul driverului.

gcc -c driver.c -o driver.o

3. Conectați programul de driver compilat la Biblioteca statică. Rețineți că-L. este folosit pentru a spune că biblioteca statică se află în dosarul curent (consultați acest lucru pentru detalii despre opțiunile-L și-l).

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

4. Rulați programul de driver

./driver fun() called from a static library

următoarele sunt câteva puncte importante despre bibliotecile statice.
1. Pentru o bibliotecă statică, codul real este extras din bibliotecă de către linker și utilizat pentru a construi executabilul final în punctul în care compilați/construiți aplicația.,

2. Fiecare proces primește propria copie a codului și a datelor. În cazul în care, ca și în cazul bibliotecilor dinamice, este partajat doar Cod, datele sunt specifice fiecărui proces. Pentru bibliotecile statice amprentele de memorie sunt mai mari. De exemplu, dacă toate instrumentele sistemului de ferestre ar fi legate static, câteva zeci de megabyte de memorie RAM ar fi irosite pentru un utilizator tipic, iar utilizatorul ar fi încetinit de o mulțime de paginare.

3. Deoarece codul bibliotecii este conectat la momentul compilării, executabilul final nu are dependențe de bibliotecă la momentul rulării, adică., nu există costuri suplimentare de încărcare a timpului de rulare, înseamnă că nu trebuie să transportați o copie a bibliotecii care este utilizată și aveți totul sub control și nu există dependență.

4. În bibliotecile statice, odată ce totul este inclus în aplicația dvs., nu trebuie să vă faceți griji că clientul va avea biblioteca (și versiunea) potrivită disponibilă pe sistemul lor.

5. Un dezavantaj al bibliotecilor statice este că, pentru orice modificare (up-gradare) în bibliotecile statice, trebuie să recompilați programul principal de fiecare dată.

6., Un avantaj major al bibliotecilor statice fiind preferat chiar și acum „este viteza”. Nu va exista nicio interogare dinamică a simbolurilor în bibliotecile statice. Multe software-uri de linie de producție folosesc biblioteci statice chiar și astăzi.

legarea dinamică și bibliotecile dinamice legarea dinamică nu necesită copierea codului, ci doar plasarea numelui bibliotecii în fișierul binar. Legătura reală se întâmplă atunci când programul este rulat, atunci când atât fișierul binar și Biblioteca sunt în memorie. Exemple de biblioteci dinamice (biblioteci care sunt legate la run-time) sunt, .so în Linux și .dll în Windows.,

în curând vom acoperi mai multe puncte despre bibliotecile dinamice și pașii pentru a le crea.acest articol este compilat de Abhijit Saha și revizuit de echipa GeeksforGeeks. Vă rugăm să scrieți comentarii dacă găsiți ceva incorect sau doriți să împărtășiți mai multe informații despre subiectul discutat mai sus.

cititor de atenție! Nu te opri din învățat acum. Faceți rost de toate conceptele importante de teorie CS pentru interviurile SDE cu cursul de teorie CS la un preț prietenos pentru studenți și deveniți gata pentru industrie.

articolul Tag-uri:
practica Tag-uri:

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *