Jika sebuah program disimpan dalam sebuah file tunggal, maka perubahan pada suatu fungsi saja sudah mengharuskan kompilasi ulang terhadap seluruh program lalu membuat kembali file eksekutabelnya. Rekompilasi sebuah file kode sumber yang besar akan memakan banyak waktu.

Ketika program-program disimpan dalam file-file sumber yang independen, hanya file-file yang mengalami perubahan saja yang perlu dikompilasi ulang setelah kode sumbernya dirubah. Pada pendekatan ini, file-file sumber dikompilasi secara terpisah dan kemudian dihubungkan satu sama lain – dua tahap proses. Pada proses pertama, sebuah file dikompilasi tanpa membuat file eksekutable. Hasilnya dirujuk ke sebuah file objek dan memiliki ekstensi .o ketika dikompilasi menggunakan GCC.

Pada tahap kedua, file-file objek disatukan dengan program terpisah yang disebut linker. linker akan menyatukan semua file-file objek dan menghasilkan satu file eksekutabel.

Suatu file objek berisi kode-kode mesin dimana semua referensi ke alamat-alamat memori atau fungsi-fungsi (atau variabel) di file lain dibiarkan tidak terdefinisi. Hal ini memperkenankan file-file tersebut dikompilasi tanpa referensi langsung satu sama lain. Linker mengisi kekurangan pengalamatan ini ketika memproduksi file eksekutabel.

Bersambung …

Seri Sebelumnya :

.