Hva er forskjellen mellom statisk og dynamisk kobling?


Beste svaret

Før vi går videre til forskjellen, kan vi se koblingsprosessen kort.

Hvorfor lenker?

Når du skriver noen C-kode (eller et annet språk), lagres den i .c-format.

#include

int main(){

printf("quora");

return 0;

}

Nå går dette programmet gjennom kompileringsfasen der dette kildekoden konverteres til maskinens språkinstruksjoner. Dette er objektfilene som er lagret som .o- eller .obj-format. Hvis vi har to separate filer, vil vi ha to separate obj-filer. Disse filene er bare oversettelsen av programmet ditt. For å kjøre disse programmene må vi generere kjørbare filer som operativsystemet faktisk kan kjøre. For dette formålet bruker vi linker.

Nå oppretter linker en enkelt kjørbar fil av mange objektfiler. Nå i vårt C-program brukte vi hovedfunksjonen (), men hvor er definisjonen. Omfanget av kompilatoren er begrenset til en fil, så den ser ikke etter referanser som kan ha blitt erklært og definert i andre filer.

Linker søker i flere filer etter denne «hoved ()» -funksjonsdefinisjonen og kobler dem. Nå kommer du til spørsmålet ditt.

Statisk vs dynamisk lenking:

  1. I statisk lenking , kopieres alle biblioteksmodulene til det endelige kjørbare bildet. Når programmet er lastet, plasserer OS bare en enkelt fil i minnet som inneholder både kildekoden og referansebibliotekene. Mens i dynamisk lenking bare navnene på eksterne eller delte biblioteker er plassert i minnet. Med dynamisk kobling kan mange programmer bruke en enkelt kopi av den kjørbare modulen.
  2. Statisk lenking gjøres av linkerne i det siste trinnet i samlingen, mens dynamisk lenking gjøres under drift av operativsystemet.
  3. Statisk koblede filer bruker mer disk og minne ettersom alle modulene allerede er koblet. Men i Dynamisk lenking, lagres bare en kopi av referansemodulen som brukes av mange programmer og sparer dermed minne og diskplass.
  4. I Statisk lenking, hvis eksternt kildeprogram endres, må de kompileres og kobles på nytt. Men i tilfelle dynamisk lenking , trenger bare en enkelt modul å oppdateres og kompileres på nytt.
  5. Statisk koblede programmer er raskere enn deres dynamiske motstykke.
  6. Siden statisk koblet -fil inneholder alle pakker og moduler, oppstår ingen kompatibilitetsproblemer. Mens det i dynamisk lenking , kan biblioteksfilene lagres separat, det kan være kompatibilitetsproblemer (si at en biblioteksfil er samlet av ny versjon av kompilatoren).
  7. Statisk koblede programmer tar alltid konstant belastningstid mens tiden er variabel i dynamisk koblede programmer.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *