Selasa, November 05, 2019

Mengkompilasi program bahasa C

Bahasa C adalah bahasa pemrograman tingkat tinggi dan membutuhkan kompilator untuk mengkonversi bahasa program tersebut hingga menjadi kode yang dapat dieksekusi sehingga program dapat dijalankan pada komputer.

Bagaimana cara melakukan kompilasi program dalam bahasa C?

Berikut adalah tahapan yang digunakan pada Ubuntu dengan compiler gcc.

satu, Ciptakan program bahasa C dengan menggunakan teks editor kemudian simpan dengan nama filename.c

$ vi filename.c

dua, Lakukan kompilasi program dengan menggunakan perintah berikut.

$ gcc -wall filename.c -o filename

Pilihan -Wall memungkinkan semua pesan warning pada kompilator. Bentuk pilihan ini sangat direkomendasikan untuk menghasilkan program yang baik. Pilihan -o digunakan untuk menentukan output nama file. Jika option ini digunakan, maka output file dengan nama a.out akan di-generate.

tiga, Setelah eksekusi kompilasi program di-generate, selanjutnya program eksekusi dijalankan dengan menggunakan perintah berikut ini.

$ ./filename




Apa yang terjadi ketika dilakukan kompilasi program?
Kompilator mengkonversi program dalam bahasa C menjadi program yang dapat dieksekusi. Terdapat empat fase untuk program bahasa C yang dapat menjadi program eksekusi:
satu, Preprocessing,
dua, Compilation,
tiga, Assembly,
empat, Linking

Dengan mengeksekusi perintah berikut, didapatkan segala intermediate file pada direktori saat ini bersamaan dengan program eksekusi.

$gcc -wall -save -temp filename.c -o filename



Perhatikan satu-persatu dari rincian file yang dihasilkan dari proses kompilasi program.

satu, Preprocessing
Pada fase pertama semua kode program akan dilewatkan. Pada fase ini terjadi beberapa tahapan:
satu, Penghapusan komentar.
dua, Perluasan dari macro.
tiga, Perluasan dari file include.
empat, Kondisional kompilasi.

Kemudian preprosessing output hasilnya akan disimpan pada filename.i. Sumber file memiliki banyak sekali info, tetapi pada akhir, kode program yang telah dibuat tersebut juga telah disimpan.

dua, Kompilasi program
Fase selanjutnya adalah melakukan kompilasi program filename.i. Output kompilasi intermediet file dari file filename.s. File merupakan suatu assembly pada tingkat perintah.

tiga, Assembly
Pada fase ini filename.s diambil sebagai input untuk dijadikan filename.o oleh assembler. File yang dihasilkan mengandung instruksi perintah pada level mesin. Pada fase ini, hanya kode yang terdapat dalam file yang dikonversi menjadi bahasa mesin, fungsi pemanggilan seperti printf() tidak akan dieksekusi lagi.

empat, Linking
Fase terakhir yang dilakukan adalah menghubungkan semua fungsi yang dipanggil dengan definisinya masing-masing. Linker dapat mengetahui segala fungsi yang diimplementasikan. Linker melakukan beberapa kerja ekstra, seperti penambahan beberapa kode tambahan pada program yang dibutuhkan ketika program dimulai dan diakhiri. Contohnya, terdapat kode program yang dibutuhkan untuk pengaturan lingkungan seperti perintah melewatkan baris argument. Tugas ini dapat dengan mudah diverifikasi dengan menggunakan $size filename dan $size filename.o. Sepanjang pemakaian perintah tersebut diketahui bagaimana file output meningkat dari object file menjadi file eksekusi. Hal ini dikarenakan kode tambahan yang diberikan linker terhadap program.

catatan: Bahwa GCC secara otomatis melakukan linking dinamis, sehingga printf() secara dinamis dihubungkan pada program.





Related Posts

Mengkompilasi program bahasa C
Oleh

mohon untuk melakukan koreksi jika terdapat kesalahan pada penulisan blog ini,