Mis on objektifail?

Objektifail on arvutifail, mille genereerib programm, mida nimetatakse kompilaatoriks ja mis sisaldab andmeid ja juhiseid. Kompilaatorid tõlgivad programmeerimiskeele lähtekoodi vahepealsesse masinloetavasse vormi, mida nimetatakse objektkoodiks. Väiksemad programmid võidakse kompileerida ühte objektifaili, samas kui suuremad programmid kompileeritakse tavaliselt mitmeks seotud funktsiooniga failiks. Need üksikud objektifailid ühendatakse linkeri abil ja operatsioonisüsteemi spetsiifiline teave lisatakse käivitatava programmi moodustamiseks.

Tavapraktikas tähistatakse objektifaili faililaiendiga “.obj”. Nende failide jaoks on aga mitu erinevat vormingut. Kõige levinumad on Intel® ümberasutava objektimooduli vorming (OMF) ning Windows® ja UNIX® System V ühine objektifailivorming (COFF). Paljudes INIX®-i süsteemides on käivitatav ja lingitav vorming (ELF) jõudnud asenda COFF.

Sõltumata vormingust sisaldab objektifail tavaliselt kolme tüüpi teavet, mis võimaldab tal suhelda teiste programmimoodulitega. Protseduuridele ja andmetele, mis on avatud välisele viitele, omistatakse nimed, millega saab neid teistest moodulitest kutsuda. Samamoodi märgitakse üles viited moodulivälisele teabele, kuid neile ei omistata nime. Kui failid on lingitud, omistatakse nimetutele viidetele nimi, mis on neile antud moodulis, kus need algselt määratleti. Kohalikke nimesid kasutatakse juhiste ja andmete jaoks, millele viidatakse ainult moodulis.

Kõiki lingitavaid koode ei salvestata objektifailidena. Teegid on eelkompileeritud rutiinide kogumid, mis salvestatakse objektikoodina. Neid toodetakse samamoodi nagu objektifaile ja need on kasulikud sageli kutsutavate protseduuride salvestamiseks. Kui linker ei leia teistest objektifailidest viidet, otsib see seda automaatselt teegifailist. Enamik programmeerimiskeele rakendusi on varustatud standardse funktsioonide teegiga.

Dünaamilise linkimise abil saab objektifaili korraga kasutada mitu käivitavat programmi. Selle asemel, et siduda objektikoodi programmiga, kui see on lingitud, tuuakse see alla programmi laadimisel või käitamise ajal, kui viidatakse protseduurile. Windows® keskkonnas nimetatakse neid dünaamiliste linkide teekideks ja tähistatakse laiendiga .dll. Unix®-iga sarnased süsteemid nimetavad seda tüüpi faile sageli dünaamilisteks jagatud objektideks (DSO). Seda tüüpi objektifaili saab rakendada ka konkreetse programmiga kasutamiseks ja see oleks selle programmi installimise osa.