Kun C-ohjelma on käännetty, kääntäjä luo objekti-koodi. Objektikoodin generoinnin jälkeen kääntäjä myös vetoaa linkeriin. Yksi tärkeimmistä tehtävistä linker on tehdä koodi kirjasto toimintoja (esim. printf(), scanf(), sqrt(), ..jne) saatavilla ohjelmaasi. Linkitin voi suorittaa tämän tehtävän kahdella tavalla, kopioimalla koodi kirjasto-toiminto objektin koodi, tai tehdä joitakin järjestelyjä, jotta täydellinen koodi kirjaston toimintoja ei kopioida, mutta käytettävissä ajon aikana.,
Staattinen linkitys ja staattiset kirjastot ovat seurausta siitä, että linker tekee kopion kaikista käytetyistä kirjastotoiminnoista suoritettavaan tiedostoon. Staattinen linkitys luo suurempia binääritiedostoja ja tarvitsee enemmän tilaa levylle ja päämuistiin. Esimerkkejä staattisista kirjastoista (kirjastot, jotka ovat staattisesti linkitettyjä) ovat,.tiedostot Linux ja .lib-tiedostoja Windowsissa.
staattisen kirjaston luomisen vaiheet anna meidän luoda ja käyttää staattista kirjastoa Unixissa tai Unixissa kuten OS: ssa.
1. Luo C-tiedosto, joka sisältää toimintoja kirjastossasi.,div>
#include <stdio.h>
void
fun(
void
)
{
printf
(
"fun() called from a static library"
);
}
We have created only one file for simplicity., Voimme myös luoda useita tiedostoja kirjastoon.
2. Luo header-tiedosto kirjastoon.
void
fun(
void
);
3. Käännä kirjastotiedostot.
gcc -c lib_mylib.c -o lib_mylib.o
4. Luo staattinen kirjasto., Tämä vaihe on niputtaa useita objektitiedostoja yhteen staattiseen kirjastoon (katso lisätietoja ar: sta). Tämän vaiheen tuotos on staattinen kirjasto.
ar rcs lib_mylib.a lib_mylib.o
5. Nyt staattinen kirjastomme on valmis käyttöön. Tässä vaiheessa voisimme vain kopioida lib_mylibin.jonnekin muualle. Demotarkoituksiin, anna meidän pitää kirjasto nykyisessä hakemistossa.
let us create a driver program that uses above created static library.
1., Luo C-tiedoston kanssa päätehtävä
#include "lib_mylib.h"
void
main()
{
fun();
}
2., Käännä ohjainohjelma.
gcc -c driver.c -o driver.o
3. Yhdistä koottu ohjainohjelma staattiseen kirjastoon. Huomaa ,että-L. käytetään kertomaan, että staattinen kirjasto on nykyisessä kansiossa (Katso lisätietoja-L ja-l vaihtoehtoja).
gcc -o driver driver.o -L. -l_mylib
4. Suorita kuljettajan ohjelma
./driver fun() called from a static library
Seuraavat ovat joitakin tärkeitä kohtia noin staattisia kirjastoja.
1. Staattinen kirjasto, varsinainen koodi on poimittu kirjaston, jonka linkitin ja käytetään rakentaa lopullinen suoritettavan kohta koota/rakentaa oman sovelluksen.,
2. Jokainen prosessi saa oman kopionsa koodista ja tiedoista. Jos dynaamisten kirjastojen tapaan vain koodeja jaetaan, tiedot ovat kullekin prosessille ominaisia. Staattisissa kirjastoissa muistijäljet ovat suurempia. Esimerkiksi, jos kaikki ikkunan system tools olivat staattisesti linkitetty, useita kymmeniä megatavua RAM-muistia olisi hukkaan tyypillinen käyttäjä, ja käyttäjä olisi hidastunut paljon sivunvaihtoon.
3. Koska kirjasto-koodi on kytketty koota aikaa, lopullinen suoritettavan ei ole riippuvuuksia kirjaston suorituksen aikana eli, ei ylimääräisiä run-time lastaus kustannuksia, se tarkoittaa, että sinun ei tarvitse kuljettaa mukana kopio kirjasto, joka on käytössä ja sinulla on kaikki hallinnassa ja ei ole riippuvuutta.
4. Staattisia kirjastoja, kun kaikki on niputettu oman sovelluksen, sinun ei tarvitse huolehtia, että asiakas on oikeassa library (ja versio) saatavilla niiden järjestelmä.
5. Staattisten kirjastojen yksi haittapuoli on, että staattisissa kirjastoissa tapahtuvien muutosten (up-gradation) vuoksi sinun on joka kerta palautettava pääohjelma.
6., Yksi merkittävä etu staattisia kirjastoja suositaan jo nyt ”on nopeus”. Staattisissa kirjastoissa ei ole dynaamista symbolien kyselemistä. Monet tuotantolinjaohjelmistot käyttävät staattisia kirjastoja nykyäänkin.
Dynaaminen yhdistää ja Dynaamiset Kirjastot Dynaaminen Linkitys ei vaadi koodin voi kopioida, se on tehdä laittamalla nimi kirjaston binary tiedosto. Varsinainen linkitys tapahtuu, kun ohjelmaa ajetaan, kun sekä binääritiedosto että kirjasto ovat muistissa. Esimerkkejä dynaamisista kirjastoista (kirjastot, jotka linkitetään ajonaikoina) ovat,. niin Linuxissa ja .DLL Windowsissa.,
pian saamme lisää pisteitä dynaamisista kirjastoista ja niiden luomiseen tähtäävistä vaiheista.
tämän artikkelin on koonnut Abhijit Saha ja arvostellut GeeksforGeeks team. Kirjoita kommentteja, jos havaitset jotain virheellistä tai haluat jakaa lisää tietoa edellä käsitellystä aiheesta.
Attention reader! Älä lopeta oppimista nyt. Hanki käsiinsä kaikki tärkeät CS Theory käsitteet SDE haastatteluja CS Theory kurssi opiskelija-ystävällinen hinta ja tulla teollisuuden valmis.