Što je objektna datoteka?

Objektna datoteka je računalna datoteka koju generira program nazvan kompajler i sadrži podatke kao i upute. Prevoditelji prevode izvorni kod programskog jezika u srednji strojno čitljiv oblik poznat kao objektni kod. Manji programi mogu se sastaviti u jednu objektnu datoteku, dok se veći programi obično sastavljaju u nekoliko datoteka povezanih funkcija. Te pojedinačne objektne datoteke spaja povezivač i dodaju se informacije specifične za operativni sustav kako bi se formirao izvršni program.

U uobičajenoj praksi, objektna datoteka se označava ekstenzijom datoteke “.obj”. Međutim, postoji nekoliko različitih formata za te datoteke. Najčešći su Intel® Relocatable Object Module Format (OMF) i Common Object File Format (COFF) za Windows® i UNIX® System V. U mnogim INIX® sustavima, Executable and Linkable Format (ELF) je došao do zamijenite COFF.

Bez obzira na format, objektna datoteka obično sadrži tri vrste informacija koje joj omogućuju interakciju s drugim programskim modulima. Procedurama i podacima koji su otvoreni za vanjsku referencu dodijeljena su imena po kojima se mogu pozivati ​​iz drugih modula. Slično, bilježe se reference na informacije izvan modula, ali im se ne dodjeljuje naziv. Kada su datoteke povezane, neimenovanim referencama bit će dodijeljen naziv koji im je dat u modulu u kojem su izvorno definirane. Lokalni nazivi koriste se za upute i podatke na koje se upućuje isključivo unutar modula.

Nije sav povezivi kod pohranjen kao objektne datoteke. Knjižnice su zbirke unaprijed kompiliranih rutina koje se pohranjuju kao objektni kod. Proizvode se na isti način kao i objektne datoteke i korisne su za pohranjivanje često nazivanih procedura. Kada povezivač ne pronađe referencu u drugim objektnim datotekama, automatski će je tražiti u datoteci biblioteke. Većina implementacija programskog jezika dolazi sa standardnom bibliotekom funkcija.

Pomoću dinamičkog povezivanja, objektnu datoteku može istovremeno koristiti više programa koji se izvršavaju. Umjesto vezanja objektnog koda s programom kada je povezan, on se dohvaća kada se program učita ili tijekom izvođenja kada se referencira procedura. U okruženju Windows® one su poznate kao biblioteke dinamičkih veza i označene su ekstenzijom “.dll”. Sustavi slični Unixu često ovu vrstu datoteke nazivaju dinamičkim zajedničkim objektom (DSO). Ova vrsta objektne datoteke također se može implementirati za korištenje s određenim programom i bila bi dio instalacije tog programa.