Previous Next Table of Contents

3. Kompilasi

3.1 Penamaan File Source

Kompiler gcc mempunyai beberapa aturan penamaan ekstensi file sumber (source file). Berdasarkan ekstensi file, gcc akan memproses file sumber dengan aturan sebagai berikut:

3.2 Dasar-dasar Kompilasi Program

Kompilasi adalah proses penerjemahan program dari bahasa sumber (bahasa C) menjadi bahasa mesin. Hasil dari kompilasi adalah sebuah file objek (.o). Namun file ini belum bisa kita eksekusi. Untuk membuat program yang bisa dieksekusi, maka kita perlu menjalankan proses link, yang akan dijelaskan di bagian selanjutnya.

Untuk mengkompilasi program kita pakai option -c pada gcc.

$ gcc -c hello.c

Hasil proses kompile di atas adalah file hello.o (file dengan ektensi .o dapat kita setarakan dengan file .obj di lingkungan DOS/Windows).

Kalau kita ingin agar output file dengan nama lain, bisa dipakai option -o.:

$ gcc -c -o my_hello.o hello.c
akan menghasilkan output berupa file my_hello.o, bukan file hello.o.

Untuk mengkompilasi lebih dari satu file secara bersamaan:

$ gcc -c hello.c main.c
akan menghasilkan file hello.o dan main.o.

Agar program kita benar-benar bebas dari kesalahan, maka perintahkan kompiler agar menampilkan semua pesan warning yang ditemui, dengan option -Wall:

$ gcc -Wall -c hello.c

3.3 Dasar-dasar Linking

Lingking adalah proses penggabungan file-file objek dan library-library yang dibutuhkan menjadi sebuah program executable.

Dari file-file objek (.o), jika kita ingin membuat executable-nya, kita jalankan perintah berikut:

$ gcc hello.o

maka me-link file hello.o dengan library C (libc.so) dan library dynamic loader (ld-linux.so) dan menghasilkan executable yang bernama a.out di current directory.

Kalau kita ingin executable dengan name lain, kita berikan option -o pada gcc:

$ gcc -o hello hello.o
akan menghasilkan executable dengan nama hello di current directory.

3.4 Mengkompilasi dan Me-link secara Bersamaan

Yang dimaksudkan secara bersamaan adalah melakukan keduanya dengan sebuah perintah tunggal. Sebenarnya, gcc tetap akan melakukannya secara sekuensial, compile dulu baru di-link.

$ gcc -o hello hello.c
akan mengkompilasi file hello.c, me-link-nya dengan library-library standar (libc.so dan ld-linux.so), dan menghasilkan executabel hello di current directory. Perhatikan bahwa tidak ada file .o yang dihasilkan.

Sekarang setelah Anda mengetahui dasar-dasar kompilasi dan linking, mari kita manfaatkan make dan Makefile untuk membantu pembangunan program kita. Silakan menuju ke bab berikutnya.


Previous Next Table of Contents