> 1 <
Kırık Link Bildir! #89890 14-07-2006 09:09 GMT-1 saat
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'ı
bağlantıyı göster (facebook ile) bağlantıyı göster (klasik üye girişi ile) 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
quote:
#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
quote:
# cd /home/kullanci_adiniz/deneme/
şimdi de o dizin içindeki deneme.c yi derleyelim
quote:
# 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
quote:
# gcc deneme.c
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 ?
quote:
# ./deneme
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.
quote:
#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
quote:
#include <stdio.h>
#include <math.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ı
quote:
# 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
quote:
# 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
quote:
#include <stdio.h>
#include <topla.h> /* /usr/library dizininde olan bize ait özel bir dosya olsun tabi sadece bir örnek */
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 ..
quote:
# 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.
Evet şimdilik bu kadar eğer yanlış varsa arkadaşlar düzeltsin.
Buarada birşey daha demek istiyorum. GCC ile extradan şeyler bilen arkadaşlar varsa onlarda bu yazı altına bildiklerini lütfen eklesin. Baya bir kişinin işine yaracak bir yazı olacaktır eminin....
deez_nuts bunu beğendi...
Hata Oluştu