From: M.Baris Demiray (baris@labristeknoloji.com)
Date: Thu 03 Mar 2005 - 23:00:47 EET
@dortgoz wrote:
> Merhaba.
Merhaba,
>
> GCC ile bir sorunum var ve c�zemedim.
> sorunum $u; hazirladigim bir C kaynak kodunu:
> - gcc -c programim.c -o programim - ile sorunsuz sekilde derliyorum.
> derledikten sonra ./programim dedigim zaman, - Erisim Engellendi -
> hatasi cikiyor ve programi y�r�tm�yor. Ama birde C kaynak kodunu:
> - gcc programim.c -o programim - olarak derledigimde, yani -c
> parametresini eklemeyip derledigimde, programi sorunsuz y�r�t�yor.
> ve -c parametresi ile derlenen program konsolda ince,
> -c parametresi olmadan derlenen program kalin g�z�k�yor ve
> baska yerlerden aldigim derlenmis bir C programi, ki muhtemelen
> -c parametresi alarak derlenmiski, calistirmaya kalktigim zaman
> - Erisim Engellendi - diyor.
Sadece -c parametresini kullandığınız zaman bağlama işlemi yapılmaz.
Yani
gcc -c program.c -o program
dediğinizde `program' dosyasında kaynak kodda kullandığınız kütüphane
işlevlerinin sadece sembolleri vardır. Yani printf() işlevini
çağırmışsanız bu daha sonra bağlayıcının anlayacağı bir şekilde
ifade edilmiştir ama `program' dosyası printf()'in ne yaptığından
habersizdir.
Bu yüzden programınız tek bir dosyadan oluşuyorsa
gcc -o program program.c
şeklinde derlemelisiniz. Ancak bir kaç tane dosya olduğunda -c
parametresi anlamlı olacaktır. Örneğin projenizde main.c ve
yardimci.c dosyaları olduğunu, main() işlevinin main.c'de yer
aldığını ve main()'den çağırılan diğer işlevlerin yardimci.c'de
bulunduğunu varsayalım. Bu durumda main.c'yi tek başına derlemeniz
bir şey ifade etmeyeceğinden (ve yapılamayacağından) projenizi
aşağıdaki şekilde derlemelisiniz:
gcc -c main.c -o main.o
gcc -c yardimci.c -o yardimci.o
gcc -o main yardimci.o main.o
Burada oluşacak `main' dosyası sizin asıl çalışabilir programınız
olacaktır.
İyi çalışmalar.
>
> kullandigim sistem, GNU/Linux Debian 3.1 (a.k.a Sarge)
> kullandigim gcc versionu, GCC 3.3.5-1
>
> umarim yeterince acik sekilde anlatmisimdir sorunumu.
> nasil bir yol izlemem lazim, yardimci olursaniz sevinirim.
>
-- M.Baris Demiray"3 yıldır İdeal Teknoloji'nin bir iş kanalı olarak 'Labris' markasıyla yürüttüğümüz çalışmalarımızda edinmiş olduğumuz başarı, 2005 yılına girerken faaliyetlerimizin bağımsız bir şirkete 'Labris Teknoloji' ismiyle taşınması kararını(spin-off) getirmiştir. Yine, birlikte başarılı projelere imza atabilmek ümidiyle."
Labris Teknoloji
_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama