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:
- 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.
- Statisk lenking gjøres av linkerne i det siste trinnet i samlingen, mens dynamisk lenking gjøres under drift av operativsystemet.
- 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.
- 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.
- Statisk koblede programmer er raskere enn deres dynamiske motstykke.
- 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).
- Statisk koblede programmer tar alltid konstant belastningstid mens tiden er variabel i dynamisk koblede programmer.