[Çözüldü] C build-essential olmasına rağmen derlenmiyor

Başlatan esrama, 05 Şubat 2009 - 18:03:04

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

esrama

Biliyorum artık bu konu çok uzadı, konuyu açmamak için elimden geleni yaptım fakat bir sonuca varamadım.
Her build-essential yüklü Ubuntu'da C terminalden derlenebiliyor. Fakat ben derlemeye kalktığım zaman hata veriyor.
Mesela :
#include <stdio.h>
int main()
{
printf("çalıştı:)");
return 0;
}
diye kaydettiğim 1.c dosyası için terminalden
gcc -o 1 1.c , gcc -o -lm 1 1.c gibi internetten bulduğum komutları giriyorum. Sonuç olarak verdiği hata şöyle :
gcc: 1: No such file or directory
1.c: In function 'main':
1.c:4: error: stray '\342' in program
1.c:4: error: stray '\200' in program
1.c:4: error: stray '\234' in program
1.c:4: error: stray '\303' in program
1.c:4: error: stray '\247' in program
1.c:4: error: stray '\304' in program
1.c:4: error: stray '\261' in program
1.c:4: error: stray '\305' in program
1.c:4: error: stray '\237' in program
1.c:4: error: 'al' undeclared (first use in this function)
1.c:4: error: (Each undeclared identifier is reported only once
1.c:4: error: for each function it appears in.)
1.c:4: error: expected ')' before 't'
1.c:4: error: stray '\304' in program
1.c:4: error: stray '\261' in program
1.c:4: warning: format not a string literal and no format arguments
1.c:4: error: stray '\342' in program
1.c:4: error: stray '\200' in program
1.c:4: error: stray '\235' in program
1.c:4: error: expected ';' before ')' token
1.c:4: error: expected statement before ')' token


Yardımcı olabilirmisiniz ?

erginemr

Gcc'nin parametreleri için:
http://forum.ubuntu-tr.net/index.php/topic,4949.msg55480.html#msg55480
gcc -o <yeni_oluşturulacak_program_adi> <kaynak_kodun_adı.c>

Kısacası "-o" parametresi ile yeni oluşacak programın ismini veriyorsunuz.

Bir de derleyici, yazdığınız koddaki gülümseme ifadesinin parantez kapat ")" işaretini karıştırıyor olabilir.
Alıntı Yap#include <stdio.h>
int main()
{
printf("çalıştı:)");
return 0;
}

Bu karakterin başına ters çizgi (\ = escape karakteri) koyarsanız sorun çözülebilir. Ayrıca çift tırnaklar da standart çift tırnak karakterinden farklı gibi:
Alıntı Yap#include <stdio.h>
int main()
{
printf("çalıştı:\)");
return 0;
}

esrama

@erginemr sorun gülümsemede değil dediğin gibi tırnak işaretindeymiş ... Dediğin komut ile (gcc -o <yeni_oluşturulacak_program_adi> <kaynak_kodun_adı.c>) yeni bir dosya masaüstünde oluştu. Fakat ./yenidosya komutunu terminalden girdiğim zaman şu hatayı alıyorum :
bash: ./1: No such file or directory

erginemr

Aynı klasörde "yenidosya" isimli bir program oluşmuş mu, ve gcc, bu programa otomatik olarak çalıştırma izinlerini atamış mı?
ls -l yeni*

esrama

Aynı klasörde yenidosya oluştu. Fakat ikinci dediğini bilemiyorum...
veridğin komut sonucu şunlar çıktı :

The program 'LS' is currently not installed.  You can install it by typing:
sudo apt-get install sl
bash: LS: command not found

erginemr

Alıntı yapılan: esrama - 06 Şubat 2009 - 10:24:42
Aynı klasörde yenidosya oluştu. Fakat ikinci dediğini bilemiyorum...

Çalıştırma izinlerini görmek için
ls -l yeni*
komutunun çıktısına bakmalıyız. (-l : küçük L harfi)

Not: Linux, küçük-büyük harf duyarlıdır. "ls" komutu aynı klasördeki dosya ve dizinleri listeler, ama "LS" komutunu Linux tanımaz.

esrama

Küçük l harfi ile çıktı şöyle :

-rwxr-xr-x 1 user user 9039 2009-02-06 10:13 yenidosya

erginemr

Hmm, şimdi işler çetrefilleşti işte. "-rwxr-xr-x" ibaresindeki x işaretleri "executable" yani çalıştırılabilir demek. gcc, programa bizim için bu özelliği atamış. Kullanıcı izinleri hakkında @ebubekirs'in güzel bir açıklaması var:
http://forum.ubuntu-tr.net/index.php/topic,6053.msg69911.html#msg69911

Hazır konu açılmışken, temel konsol komutlarını anlatan şu başlık da çok faydalı:
http://forum.ubuntu-tr.net/index.php/topic,1269.msg11525.html#msg11525

Şu komutu ve hata çıktısını yine verebilir misiniz:
./yenidosya

Eğer bu şekilde çalışmazsa, sorun "Masaüstü" klasöründeki Türkçe karakterlerden kaynaklanıyor da olabilir. Bu dosyayı ev dizinimize kopyalayıp öyle çalıştıralım:
cp yenidosya ~
cd ~
./yenidosya



esrama

#8
./yenidosya için çıktı aldığımda hiçbirşey yazmıyor... fakat yeni satır şu şekilde oluyor :
çalıştıuser@user-desktop:~/Desktop$

Buda kaynak kodun çalıştığı anlamına geliyor :) Fakat hata nerede anlayamadım. Deminde aynı şeyi yazmıştım fakat olmamıştı :(

Sistem ingilizce ve hiçbiryerde tükçe karakter yok şu anda ... (Bu arada firefox siz yeni mesaj yazınca sayfayı yenilediğim zaman göstermiyor :( )


Bu mesajı yazdıktan sonra tekrar birkaç deneme daha yazptım sorunsuz çalıştı :)
@erginemr yardımınız için  teşekkür ederim :) !

erginemr

Aynı işlemleri ben de denedim.

İlginç ama bende sorunsuz çalıştı. Fazladan printf içerisinde yeni satır ifadesi "\n" kullandım:
Alıntı Yap#include <stdio.h>
int main()
{
printf("çalıştı:)\n");
return 0;
}

Bir karşılaştırın isterseniz...

[IMG]http://img33.picoodle.com/img/img33/3/2/6/t_Pano01m_d6ec18e.png[/img]

erginemr

Olay yeni satır karakteriymiş "\n". Geçmiş olsun. Hatta...

Geçmiş olsun.\n :)


esrama

Canlı yardım sadece bu forumda vardır heralde :) Teşekkrüler...