Bagaimana kode C berubah menjadi program yang bisa dijalankan?
Saat kita menulis program dalam bahasa C, yang kita buat adalah source code (kode sumber) dengan ekstensi .c.
Namun, komputer tidak memahami bahasa C secara langsung โ komputer hanya memahami machine code yang berbentuk angka biner (0 dan 1).
Proses kompilasi bahasa C umumnya terdiri dari 4 tahap utama:
Pada tahap ini, compiler memproses perintah yang diawali dengan tanda # (preprocessor directives).
| Directive | Fungsi |
|---|---|
#include | Mengimpor file header (misalnya stdio.h) |
#define | Membuat macro atau konstanta |
#if, #endif | Conditional compilation |
โ ๏ธ Tahap ini belum memeriksa kesalahan syntax.
Pada tahap ini compiler:
Output tahap ini biasanya berupa file .s.
Assembler mengubah kode assembly menjadi object code, yaitu kode mesin yang sudah dalam format biner tetapi belum lengkap.
Output berupa file:
.o (Linux/macOS).obj (Windows)Object file belum bisa dijalankan karena belum terhubung dengan library (seperti printf, scanf, dll).
Linker bertugas untuk:
.exe atau .out).Misalkan kita punya file hello.c:
Jika dikompilasi dengan GCC: gcc hello.c -o hello
| Tahap | Output | Nama File |
|---|---|---|
| Preprocessing | Expanded code | hello.i |
| Compilation | Assembly code | hello.s |
| Assembly | Object code | hello.o |
| Linking | Executable | hello.exe / ./hello |
| Error | Penyebab |
|---|---|
| Syntax error | Salah ketik, kurang ; |
| Undefined reference | Linker gagal temukan library |
| Undeclared variable | Variabel belum dibuat |
Proses kompilasi adalah fondasi penting dalam memahami bagaimana program C bekerja di sistem komputer. Pemahaman ini berguna terutama saat debugging, optimasi program, atau ketika bekerja di lingkungan embedded systems.