avatar
Tarih: 08:25, 20-11-08 08:25 Sitemize Hoşgeldiniz. (Oturum AçKayıt Ol)

Bu Konuyu Görüntüleyenler
Bu Konuyu görüntüleyenler: 1 Ziyaretçi

Konuyu Gönder  Mesaj Önizleme 
 
Konuyu Değerlendir
  • 0 Oy - 0 Ortalama
  • 1
  • 2
  • 3
  • 4
  • 5
Linux Altında C Derleyici
13:33, 22-02-08 13:33
Mesaj: #1
Linux Altında C Derleyici
Linux Altında C Derleyici

Linux altında program yazabilmek için elinizin altında bir tane text editör olmalıdır. Bu editorde yazdığınız programı, o program hangi uzantıyı gerektiriyorsa o uzantılı olacak şekilde kaydedip kullanabilirsiniz. Örneğin ben C programlama dili için Kwrite kullanıyorum. (MDK 10.1 KDE kullanıyorum) Kwrite 'ta yazdığım kodu Dosya->Farkli Kaydet 'ten deneme.c şeklinde kaydediyorum. Bundan sonra yapılması gereken tek şey bu dosyayı bir C derleyici ile derlemek. Linux altında c programları cc (C Complier) yada gcc (GNU C Complier) ile derlenebilir. GNU C Complier'ı Sadece Üyeler Linkleri Görebilir. Üye Olmak İçin TIKLAYIN adresinden temin edebilirsiniz.

GCC 'nin Kullanımı

Linux altında herhangi bir editörle yazdığınıız programınızı diyelimki deneme.c şeklinde /home/kullanci_adiniz/deneme/ dizini altında kaydettiniz. Yazdığımız programda misal şöyle olsun


Code:

#include <stdio.h>

main ()
{
int a;
char ch;

a=100;
ch='A';
printf("a= %d ch = %c\n",a,ch);
}

şimdi konsoldan o dizinin olduğu yere gidelim

[code][# cd /home/kullanci_adiniz/deneme//CODE]

şimdi de o dizin içindeki deneme.c yi derleyelim

Code:

# gcc -o deneme deneme.c

bu komut satırından sonra hiçbir hata almadıysak, deneme dizini altına baktığımızda ikinci bir deneme isimli, uzantısı olmayan bir dosya görmüş oluruz. bu dosya linux altında çalıştırılabilir bir dosyadır. Az önce yazdığımız komut satırına tekrardan dönelim. şimdi orada "gcc -o deneme deneme.c" diyerek gcc yi çağırdık ve derleme sonrasında oluşacak çıktı dosyasının adınıda -o parametresi ile belirledik. Eğer sadece

[code][# gcc deneme.c /CODE]

diye yazmış olsaydık deneme.c dosyası gene derlenmiş olacaktı. ancak az önce elde ettiğimiz çalıştırabilir deneme dosyasının adını linux kendine göre belirleyecekti. Peki gelelim şimdi programımızı nasıl çalıştıracağımıza, çünkü program ekrana birşeyler yazdırıyordu dimi ?

Code:

[# ./deneme /CODE]

yazmamız yeterli olacaktır. linux altında tüm çalıştıralabilir dosyaları konsoldan ./dosya_adi şeklinde çalıştırabiliriz. Tabi bunu yazınca biz konsoldaki kara ekranda
a= 100 ch = A
yazsını görmüş olduk

Peki Derleme Sırasında Hata olursa ?

Evet derleme sırasında hata olabilir. Diyemlimki programı yazarken bir yerde ";" kullanmayı unuttuk. misal program şöyle olsun.

Code:

#include <stdio.h>

main ()
{
int a;
char ch /* noktali virgul kullanmadan yazmisin hay aksi :p */

a=100;
ch='A';
printf("a= %d ch = %c\n",a,ch);
}

sonra az önce anlattığım gibi deneme.c yi derlemeye kalktık "# gcc -o deneme deneme.c " fakat o ne alt satıra geçeceğimize konsolda kara ekranda bir sürü şeyler yazıyor:

deneme.c: In function `main':
deneme.c:8: error: syntax error before "a"
deneme.c:9: error: `ch' undeclared (first use in this function)
deneme.c:9: error: (Each undeclared identifier is reported only once
deneme.c:9: error: for each function it appears in.)

burada bize hatanın nereden kaynaklandığı anlatılmaktadır. main fonksiyonu içinde ch bildiriminin yapılmadığını söylemektedir. Hemen editörümüz ile deneme.c yi açarsak ch olduğu satıra gittiğimizde ";" unuttuğumuzu görebilir hatayı düzeltip kaydettikten sonra tekrar derleyebiliriz.

Matematiksel Fonksiyonlar Nasıl Derlenir ?

Diyelimlki programımız şöyle olsun

Code:

#include <stdio.h>


main ()
{
int a,b;
char ch;

a=100;
b=sqrt(a);
ch='A';
printf("a= %d ch = %c b = %d\n",a,ch,b);
}

bu programı

Code:

# gcc -o deneme deneme.c

şeklinde derlemeye kalkarsak aşağıdaki gibi bir hata yeriz:

/home/kullanici_adiniz/tmp/ccEhkAmZ.o(.text+0x31): In function `main':
: undefined reference to `sqrt'
collect2: ld returned 1 exit status

bu hatadan kurtulmak için derleme sırasında "-lm" parametresini kullanmamız gerekmektedir. -lm derleme sırasında matematiksel kütüphaneleri koda eklemektedir. yani komut satırı şu şekilde olacak

[CODE# gcc -lm -o deneme deneme.c]

Benimde yazıyı yazarken dikkatimi çekti yazdığımız programdan "#include <math.h>" kaldırsak bile yukarıdaki gibi derlersek programımız çalışıyor. çünkü -lm ile derleme sırasında koda libm.so 'yu eklemiş olduk.

Eğer yazdığımız koda eklenecek olan kitaplıklar ve kütüphaneler sistemde standart olan yerlerde mevcut değilse ne olacak ?

Evet mesela diyelim ki /usr/library diye bir dizinimiz olsun. Burada bizim işimize yarayan kütüphaneler olsun. kaynak kodumuzda buradaki kütüphanalerden birini çağıralım , misal kaynak kodumuz şöyle olsun

Code:

#include <stdio.h>

main ()
{
int a,b,c;
char ch;

a=100;
b=20;
c=topla(a,b);
ch='A';
printf("a= %d ch = %c c = %d\n",a,ch,c);
}

şimdi bu program nasıl derlenecek? işte böyle

Code:

# gcc -o deneme deneme.c -I/usr/library -Itopla

böylelikle derleyiciye topla.h 'ı /usr/library dizinin içinde aramasını söyledik. eğer böyle farklı dizinlerde farklı dosyaları eklemek zorunda kalırsanız her bir dosya için -I dizin1 -I dizin2 -Idosya_adi -Idosya_adi2 şeklinde gcc komut satırına eklemelisiniz.

Gayret Et Güzelim...
Bu kullanıcının gönderdiği tüm mesajları bul
Bu mesajı bir cevapta alıntı yap
18:03, 23-02-08 18:03
Mesaj: #2
Cvp: Linux Altında C Derleyici
Paylaşım İçin Teşekkürler

[Resim: uyari.gif]Uyarı: İndirmeye başlamadan önce lütfen linklerin hepsini kontrol ediniz.
[Resim: istek.gif]İstek Yapmadan Önce Forumda Sadece Üyeler Linkleri Görebilir. Üye Olmak İçin TIKLAYIN Yapınız!
[Resim: saygi.gif]Verilen emeğe lütfen saygı gösteriniz. En azından bir teşekkür edebilirsiniz.


Her Türlü Sorununuzda Bana Ulaşın.
Zamanın Durduğu Kaliteli İnsanların Paylaşım Mekanı

Sadece Üyeler Linkleri Görebilir. Üye Olmak İçin TIKLAYIN

Hedefimiz En Büyük ve En İyi Olmaktır
Kullanıcının websitesini ziyaret et Bu kullanıcının gönderdiği tüm mesajları bul
Bu mesajı bir cevapta alıntı yap
Konuyu Gönder  Mesaj Önizleme 


Foruma Git: