Linuxte C/C++ Complier(Derleyici)

Complier(Derleyici) Nedir?

Complier yani derleyiciler kısaca bizim yazdığımız programları makine diline çeviren programlardır. Yazdığımız dili makinenin anlayacağı dile (makine diline) çeviren programlara complier(derleyici) denir.

Örnek olarak ekrana Merhaba Dünya yazan basit bir programımız olsun.

C++ Kodu: yazdir.cpp

#include <iostream>
using namespace std;

int main(void){
	cout<<"Merhaba Dünya";
	return 0;
}

Yukarıdaki kodu bir metin belgesine yazıp kayıt ederken doysa soyadını .cpp şeklinde kayıt edersek c++ kodumuzu yazmış oluruz.

Örnek olarak dosyamızın adı yazdir.cpp olsun. Dosyamızı oluşturduk ve şimdi çalıştırmamız gerekiyor. Yukarıda kodda göründüğü gibi kodlar bizim anliyacağımız şekilde genelde ingilizce kelimelerin ve kısaltmalarının kullanımı ile oluşuyor. Peki bu kodları bilgisayar nasıl anlıyor işte bunun için complier(derleyici) ler var.

Bu yazdığımız yüksek seviyeli programlama dili kodunu makine diline çeviren programlar var. Bunlara derleyici diyoruz. Yazdığımız programları makine diline yani anlamlı 1 ve 0 lara çeviren programlar.

C++ için Derleyici (G++)

C++ kodumuzu makine diline çevirmek için g++ derleyicisini kullanabiliriz.

root@pc:~/Documents$ ls
yazdir.cpp
root@pc:~/Documents$ g++ yazdir.cpp
root@pc:~/Documents$ ls
a.out  yazdir.cpp

# g++ programadi.cpp

Şeklinde kullanabiliriz. Bu bize yazdığımız programının makine diline çevrilmiş halini verecektir.

a.out adındaki dosya bizim programımızın makine diline çevrilmiş halidir.

Şimdi programımızı çalıştıralım.

root@pc:~/Documents$ ./a.out
Merhaba Dünya

Dosyayı çalıştırmak için dosya adını terminale belirtmemiz yeterli.

./ ile çalıştıracağımız programın bulunduğumuz dizinde olduğunu belirtiyoruz.

# g++ yazdir.cpp -o makinekodu

root@pc:~/Documents$ g++ yazdir.cpp -o makinekodu
root@pc:~/Documents$ ls
a.out  yazdir.cpp  makinekodu

-o parametresi ile oluşturacağımız çıktıya isim verebiliriz.

Şimdi çalıştıralım

root@pc:~/Documents$ ./makinekodu
Merhaba Dünya

Gördüğümüz gibi a.out dosyası ile aynı sonucu verdi.

Eğer a.out ya da makinekodu dosyalarını bir hexeditor ile ya da metin editoru ile açmaya kalkarsanız görürsünüz ki kodlarımız 0 ve 1 lerden oluşmaktadır.

C için Derleyici (cc - gcc)

Bu sefer bir c programını derleyelim.

#include <stdio.h>

int main(void){
	printf("%s",Merhaba Dünya");
	return 0;
}

Programımızı bu sefer yazdir.c şeklinde kayıt ediyoruz.

# gcc yazdir.c

root@pc:~/Documents$ gcc yazdir.c
root@pc:~/Documents$ ls
a.out  yazdir.cpp  yazdir.c  makinekodu
root@pc:~/Documents$ ./a.out
Merhaba Dünya

Görüldüğü gibi programımız çalışıyor. Aynı işlemi cc adlı derleyici ilede yapabiliriz.