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

Kaynak

Bu yazı Programlama içinde yayınlandı. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s