Hakkında Künye

GCC ile C/C++ Kodlarını Derleme

Tatilin bu ilk günlerinde yazı yazmak nasıl zor geliyor bilemezsiniz. Ve şimdi ben, evimde olmanın huzuru, uzun bir aradan sonra demleme çay içmenin mutluluğu ve işi son günlere bırakmış olmanın stresiyle yazıma başlıyorum.

Bu ayki yazımda, Linuxta, genellikle C/C++ kodlarını derlemek için kullandığımız gcc'nin nasıl kullanıldığını basitçe anlatmaya çalışacağım. Başta sadece C derleyicisi olarak hazırlanan gcc, adını GNU C Compiler (GNU C Derleyicisi) kelimelerden almaktaydı. Ancak daha sonra, gcc paketine başka diller de eklenince, gcc, GNU Compiler Collection (GNU Derleyici Pakedi) olarak ifade edilmeye başladı. Bir C ya da C++ kodunu gcc ile derlemek için, kodu bir dosyaya yazıp kaydediyoruz. C kodları .c C++ kodları da .cpp uzantılı olarak kaydedilir genellikle. kod.c isimli bir c kodu dosyasını, gcc kod.c komutu ile derleyeceğiz.

[alaettin@zubaroglu e-bergi]$ gcc kod.c  

Bunu yaptığımız zaman, bulunduğumuz dizinde a.out isimli, çalıştırılabilir bir dosya oluşacak.

[alaettin@zubaroglu e-bergi]$ ls
a.out kod.c
[alaettin@zubaroglu e-bergi]$

Oluşan bu çalıştırılabilir dosyayı da, başka herhangi bir çalıştırılabilir dosya gibi, dosyanın tam yolunu vererek çağırıyoruz.

[alaettin@zubaroglu e-bergi]$ ./a.out
Tesekkurler e-bergi.
[alaettin@zubaroglu e-bergi]$

( ./a.out bulunduğumuz dizindeki a.out dosyasını ifade etmektedir.) Oluşacak çalıştırılabilir dosyayanın ismini belirlemek istiyorsak, ki bu genellikle istenen bir durumdur, gcc'ye -o (--output) parametresini vererek bunu yapabiliriz.

[alaettin@zubaroglu e-bergi]$ gcc kod.c -o calisan

ya da

[alaettin@zubaroglu e-bergi]$ gcc kod.c --output calisan

Bu komutların herhangi biri sonucunda, 'calisan' isimli çalıştırılabilir bir dosya oluşmuş olacak.

[alaettin@zubaroglu e-bergi]$ ls
calisan kod.c
[alaettin@zubaroglu e-bergi]$

Bazen yazdığımız koda farklı kütüphaneler ekleme ihtiyacı duyarız. Bu gibi durumlarda, eklenmesi gereken kütüphaneleri gcc'ye -l parametresi ile birlikte vermemiz gerekir. Mesela yazdığımız kod sinus, cosinus hesaplama gibi işlemler yapıyorsa, sorunsuz çalışabilmesi için math.h kütüphanesine ihtiyaç duyacaktır. Yazdığımız kodun başına

#include <math.h>

satırını eklememiz gerekmekle birlikte, gcc'ye de -lm parametresini vermeliyiz.

[alaettin@zubaroglu e-bergi]$ gcc kod.c -o calisan -lm

Bu satırdaki '-l', derleme işlemine bir kütüphane ekleyeceğimizi, 'm' de, eklediğimiz kütüphanenin math.h kütüphanesi olduğunu ifade etmektedir. Farklı kütüphaneler eklemek için 'm' yerine diğer kütüphaneleri ifade eden kelimeleri yazmamız gerekiyor.

İlgili parametreleri vererek gcc'nin istediğimiz kategorideki uyarıları göstermesini sağlayabiliriz. Bunun için Warning (Uyarı) kelimesinin baş harfi olan -W parametre olarak kullanılıyor ve istediğimiz uyarı türü -W'ya ekleniyor. Mesela -Wmissing-field-initializers gibi bir parametre ile kullanabiliyoruz gcc'yi. Ya da olası bütün uyarıları almak için -Wall parametresini kullanabiliriz.

[alaettin@zubaroglu e-bergi]$ gcc kod.c -o calisan -lm -Wall

Bir diğer önemli parametre de, -static parametresidir. Bu parametre kullanıldığı zaman, kodda kullanılan kütüphaneler çalıştırılabilir dosyanın içine eklenir. Bu parametre kullanılarak oluşturulan çalıştırılabilir dosyalar boyut olarak diğerlerinden daha büyük olacaktır.

[alaettin@zubaroglu e-bergi]$ gcc kod.c -o calisan -lm -Wall -static

gcc'nin en iyi özelliklerinden biri de, eniyileme (Optimization) yapabilmesidir. Bunun için -O parametresi kullanılır. -O parametresi, -O0, -O1, -O2, -O3 ve -Os şekillerinde kullanılabilir.

[alaettin@zubaroglu e-bergi]$ gcc kod.c -o calisan -lm -Wall -O2

-O3 en yüksek eniyilemeyi yaptırırken, -O0 hiç eniyileme yaptırmaz. -O2 ve -Os parametrelri aynı zamanda kod boyutunu kısaltacak eniyilemeleri de yaptırır.

Her programcı gibi biz de ilk defada kodu doğru bir şekilde yazamıyorsak ve koddaki hataları gdb ile ayıklayacaksak -g parametresi bu işi daha rahat yapmamızı sağlayacaktır.

[alaettin@zubaroglu e-bergi]$ gcc kod.c -o calisan -lm -Wall -g

Derleyeceğiniz kod C değil de C++ kodu ise, yapmanız gereken tek şey gcc yerine g++ komutunu kullanmak. g++ için de aynı parametreleri aynı şekilde kullanabilirsiniz.

Son olarak,

gcc -v

komutu ile bilgisayarınıza kurulu gcc'nin sürümünü öğrenebilirsiniz. Ayrıca

man gcc

komutu da size gcc hakkında çok daha ayrıntılı bilgi verecektir.

Mutlu kışlar, hatasız kodlar dilerim..

Kaynaklar



Alaettin Zubaroğlu
- 8 -