Mikä on objektitiedosto?

Objektitiedosto on tietokoneohjelma, jonka on luonut kääntäjä -ohjelma ja joka sisältää tietoja sekä ohjeita. Kääntäjät kääntävät ohjelmointikielen lähdekoodin koneellisesti luettavaksi välimuodoksi, joka tunnetaan nimellä objektikoodi. Pienemmät ohjelmat voidaan koota yhteen objektitiedostoon, kun taas suuret ohjelmat kootaan tyypillisesti useisiin aiheeseen liittyvien tiedostojen tiedostoihin. Nämä yksittäiset objektitiedostot yhdistetään linkittimellä ja käyttöjärjestelmäkohtaiset tiedot lisätään suoritettavan ohjelman muodostamiseksi.

Yleisessä käytännössä objektitiedostoa merkitään .obj -tiedostotunnisteella. Näille tiedostoille on kuitenkin useita eri muotoja. Yleisimpiä ovat Intel® Relocatable Object Module Format (OMF) ja Windows®- ja UNIX® System V: n Common Object File Format (COFF). Monissa INIX® -järjestelmissä suoritettava ja linkitettävä muoto (ELF) on tullut vaihda COFF.

Muotosta riippumatta objektitiedosto sisältää tyypillisesti kolmen tyyppisiä tietoja, joiden avulla se voi olla vuorovaikutuksessa muiden ohjelmamoduulien kanssa. Menettelyille ja tiedoille, jotka ovat avoimia ulkopuolisille viitteille, annetaan nimet, joilla niitä voidaan kutsua muista moduuleista. Samoin viittaukset moduulin ulkopuolisiin tietoihin on merkitty, mutta niille ei ole annettu nimeä. Kun tiedostot linkitetään, nimeämättömille viitteille annetaan niiden nimi siinä moduulissa, jossa ne alun perin määriteltiin. Paikallisia nimiä käytetään ohjeissa ja tiedoissa, joihin viitataan yksinomaan moduulin sisällä.

Kaikkia linkitettäviä koodeja ei tallenneta objektitiedostoina. Kirjastot ovat esikäännettyjen rutiinien kokoelmia, jotka tallennetaan objektikoodina. Ne on tuotettu suunnilleen samalla tavalla kuin objektitiedostot ja ne ovat hyödyllisiä usein kutsuttujen menettelyjen tallentamiseen. Jos linkittäjä ei löydä viitettä muista objektitiedostoista, se etsii sitä automaattisesti kirjastotiedostosta. Useimmat ohjelmointikielen toteutukset sisältävät vakiokirjaston toimintoja.

Dynaamisen linkityksen avulla useat suorittavat ohjelmat voivat käyttää objektitiedostoa samanaikaisesti. Sen sijaan, että sidottaisiin objektikoodi ohjelmaan linkitettäessä, se haetaan, kun ohjelma ladataan, tai ajon aikana, kun viitataan menettelyyn. Windows® -ympäristössä niitä kutsutaan dynaamisiksi linkkikirjastoiksi, ja niitä merkitään “.dll” -laajennuksella. Unixin® kaltaiset järjestelmät kutsuvat tämän tyyppistä tiedostoa usein dynaamiseksi jaetuksi objektiksi (DSO). Tämäntyyppinen objektitiedosto voidaan myös toteuttaa tietyn ohjelman kanssa käytettäväksi ja se olisi osa kyseisen ohjelman asennusta.