Kompiler gcc
mempunyai beberapa aturan penamaan ekstensi file sumber (source file). Berdasarkan ekstensi file, gcc
akan memproses file sumber dengan aturan sebagai berikut:
.c
untuk source file C..h
untuk header file C atau C++, namun biasanya tidak dipakai secara langsung dalam command-line..C
untuk source file C++..cc
untuk source file C++..cxx
untuk source file C++..cpp
untuk source file C++..s
untuk source file assembler..o
untuk file objek (seperti file .obj
di lingkungan DOS/Windows)..a
untuk
archive library.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
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.
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.