Ce este un fișier obiect?

Un fișier obiect este un fișier de calculator generat de un program numit compilator și conține date, precum și instrucțiuni. Compilatorii traduc codul sursă al limbajului de programare într-o formă intermediară care poate fi citită de mașină cunoscută sub numele de cod obiect. Programele mai mici pot fi compilate într-un singur fișier obiect, în timp ce programele mai mari sunt de obicei compilate în mai multe fișiere cu funcții asociate. Aceste fișiere obiect individuale sunt unite de un linker și informații specifice sistemului de operare sunt adăugate pentru a forma un program executabil.

În practica obișnuită, un fișier obiect este notat cu o extensie de fișier „.obj”. Există totuși mai multe formate diferite pentru aceste fișiere. Cele mai comune sunt Intel® Relocatable Object Module Format (OMF) și Common Object File Format (COFF) ale Windows® și UNIX® System V. În multe sisteme INIX®, formatul executabil și conectabil (ELF) a ajuns la înlocuiți COFF.

Indiferent de format, un fișier obiect conține de obicei trei tipuri de informații care îi permit să interacționeze cu alte module de program. Procedurilor și datelor care sunt deschise referințelor externe li se atribuie nume prin care pot fi apelate din alte module. În mod similar, referințele la informații din afara modulului sunt notate, dar nu li se atribuie un nume. Când fișierele sunt legate, referințelor fără nume li se va atribui numele dat în modulul în care au fost definite inițial. Numele locale sunt folosite pentru instrucțiuni și date la care se face referire numai în cadrul unui modul.

Nu tot codul care poate fi conectat este stocat ca fișiere obiect. Bibliotecile sunt colecții de rutine precompilate care sunt stocate ca cod obiect. Ele sunt produse aproape în același mod ca fișierele obiect și sunt utile pentru stocarea procedurilor numite frecvent. Când un linker nu găsește o referință în alte fișiere obiect, o va căuta automat într-un fișier de bibliotecă. Majoritatea implementărilor unui limbaj de programare vin cu o bibliotecă standard de funcții.

Prin intermediul legăturii dinamice, un fișier obiect poate fi utilizat simultan de mai multe programe de execuție. În loc de a lega codul obiect de un program atunci când este legat, acesta este preluat când programul este încărcat sau în timpul execuției când se face referire la o procedură. În mediul Windows®, acestea sunt cunoscute ca biblioteci de link-uri dinamice și sunt notate cu extensia „.dll”. Sistemele similare cu Unix® numesc adesea acest tip de fișier un obiect partajat dinamic (DSO). Acest tip de fișier obiect poate fi, de asemenea, implementat pentru a fi utilizat cu un anumit program și ar face parte din instalarea acelui program.