[Çözüldü] Derlenen dosyayı çalıştırmak

Başlatan Hakan Yalçın, 24 Temmuz 2010 - 19:30:37

« önceki - sonraki »

0 Üyeler ve 3 Ziyaretçi konuyu incelemekte.

Hakan Yalçın

Herkese merhabalar.

Şöyle bir problemim var. Netbeans'da bir kod yazıp (C dili) derliyorum ve terminalde netbeans çalıştırıyor. Fakat çalıştırılabilir dosyayı gidip bulup çift tıklayarak çalıştırdığımda hiç * bir şey olmuyor. Acaba bu dosyaları nasıl çalıştırabilirim?

Çünkü yazdığım her programı bi daha bi daha derleyip çalıştırırsam işim var.

Nasıl program olarak çalıştırabilirim. Bu arada terminalde ismini yazdığımda "command not found" diyor.

Cevaplarınızı bekliyorum.

bytan

Çalıştırılabilir olarak işaretliyor musun peki? Uçbirimde çalıştırmak için ise:

./falanca.derlenmiş.dosya
Umut en büyük kötülüktür; işkenceyi uzatır. - F.N.


Bir şey ne ise odur, bu kadar. Öyleyse, iki şey arasında bağdaşıklık varsa, bu aralarında iletişim kuruyorlar demek değildir.
"... kavrayışını bilgi ile derinleştir ..."
PF @ ST

ironic

Dosya adıyla çalıştırabilmek için dosyayı PATH (dosya yolu) üzerinde bir dizine koyman lazım.

Aşağıdaki iletide anlatılanları uygulayarak, ev dizininde dosyaların doğrudan görülebileceği bir dizin oluşturabilirsin.

http://forum.ubuntu-tr.net/index.php/topic,19614.msg249540.html#msg249540

Ekleme yapayım alt dizinlerdeki dosyaları görmez.

Hakan Yalçın

Dosyanın olduğu klasöre gidip ./dosyaadi şeklinde çalıştırabiliyorum.

Dosyanın çift tıklanarak terminalde çalıştırmanın bir yolu var mı acaba?

heartsmagic

Sağ tıkla, özelliklere gel ve "çalıştırılabilir" olarak işaretle.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

Hakan Yalçın

#5
Çalıştırılabilir işaretli olmasına rağmen hiçbir şey olmuyor. (bir program gibi çalışmasına izin ver)

Bunu kaldırdıp çalıştırdığımda ise uygulama seç çıkıyor (birlikte aç)

Önerisi olan.

heartsmagic

Uygulamanın içeriği nedir? Eğer sadece uçbirimde çalışacak bir şeyse tepki vermiyor da olabilir.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

Hakan Yalçın

Evet. C ' de console uygulamaları geliştiriyorum. Bazen konsoldan veri alan ona göre işlem yapan programlar.

heartsmagic

Bunu daha önce de irdelemiştik sanırım. Uçbirim çalışıyor olabilir ama hemen kapanıyordur. Kapanmaması için koduna bir iki ekleme yapabilirsin. Örneğin klavyeden bir giriş beklesin çıkmak için.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

Hakan Yalçın

Onu denedim fakat olmadı. Ayrıca şöyle bir şey fark ettim. Birlikte aç kısmında hiç bir program yok. Onunla alakalı olabilir mi?

bytan

Örneğin bir read satırı ekleyerek bash için, uçbirimin kapanmamasını sağlayabiliyorduk. Kodları aktarırsan tecrübesi olan arkadaşlar en azından bekletme kısmıyla ilgili bakabilirler.

Umut en büyük kötülüktür; işkenceyi uzatır. - F.N.


Bir şey ne ise odur, bu kadar. Öyleyse, iki şey arasında bağdaşıklık varsa, bu aralarında iletişim kuruyorlar demek değildir.
"... kavrayışını bilgi ile derinleştir ..."
PF @ ST

Hakan Yalçın

Tekrar merhabalar.

Yazdığım bir delay fonksiyonu ile ekrana yaziyi 1 sn'de bir karakter olmak üzere bastırmaya çalışıyorum. Fakat terminal yazmıyor tüm kodları çalıştırıp hepsini birden gösteriyor.

Bunun sebebi nedir acaba?

bytan

Ben pek anlamam. Ancak anlayan arkadaşlarda kullandığın fonksiyonu ve kodları görmek isteyeceklerdir sanırım.
Umut en büyük kötülüktür; işkenceyi uzatır. - F.N.


Bir şey ne ise odur, bu kadar. Öyleyse, iki şey arasında bağdaşıklık varsa, bu aralarında iletişim kuruyorlar demek değildir.
"... kavrayışını bilgi ile derinleştir ..."
PF @ ST

sem

Kulladığınız dil C ise eğer belki yardımım dokunabilir... Fakat kodları görmem gerekli @bytan'ın dediği gibi...
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

Hakan Yalçın

Hocam basit bir geciktirici fonkisyon şu şekilde

void delay(double sec)
{

while (

sem

Kodun tamamını göstersen daha iyi olurdu aslında... Fakat şöyle diyeyim ben sana GCC default olarak satır tamponlamalı çalışıyor. O nedenle bastırdığın karakterlerden sonra ya satır sonu eklemen gerekir ya da tamponu boşlatman gerekir... Standartlara göre stdout tamponuna fflush()  çekilemiyor fakat çoğu derleyici destekliyor nedense... Deneyebilirsiniz... Kodun hepsini görebilirsek daha iyi fikir sahibi olur bilen arkadaşlar... Daha rahat yardım ederler isterseniz paylaşın derim... Özellikle yazdırma kısmını paylaşmanız tamponlama ile ilgili olup olmadığını anlatacaktır bize...
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

Hakan Yalçın

Hocam kusura bakma sitede bir problem mi var anlamadım sürekli kesiliyor.

Kodlar şöyle


void delay(double sec)
{
clock_t start = clock();

while ((double)(clock() - start) / CLOCKS_PER_SEC < sec)
;
}


Bu da main.c


#include <stdio.h>
#include "utility.h"

int main(void)
{
    int n = 10;

    while (n--)
        printf("1"), delay(1.);

    return 0;
}



Bu programı çalıştırdığımızda windows da 10 kez 1 sn aralıklarla 1 yazar ekrana.
Fakat linux'da toplam 10 kez dönküe girdiği için toplam 10 sn bekleyip ondan sonra hepsini yazıyor.

Durum bu.

sem

Hiç kullanmadığım bir başlık dosyası gördüm resmen ilk defa görüyorum =)=)=).. printf fonkiyosunundan sonra satır sonu eklerseniz düzelecektir...

Örnek olsun diye veriyorum...

#include <stdio.h>

int main()
{
   char deneme[10];
   int i;
   fprintf(stdout,"gir:");
   for(i = 0;i != 10; ++i )
   {
      fscanf(stdin,"%c",&deneme[i]);
      if(deneme[i] == '\n')
      {
         deneme[i] = '\0';
         break;
      }
   }

   for(i=0; deneme[i] != '\0'; ++i)
   {
      fprintf(stdout,"%c\n",deneme[i]);
      sleep(1);
   }

}


Fakat alt alta değil de yanyana yazmak isterseniz dediğim gibi standartları göz önüne almayak aşağıdakini deneyebilirsiniz. Dev C++ ve GCC de stdout fflush edilebiliyor... Kodları inceleyin bir yardımı dokunur belki...

#include <stdio.h>

int main()
{
   char deneme[10];
   int i;
   fprintf(stdout,"gir:");
   for(i = 0;i != 10; ++i )
   {
      fscanf(stdin,"%c",&deneme[i]);
      if(deneme[i] == '\n')
      {
         deneme[i] = '\0';
         break;
      }
   }

   for(i=0; deneme[i] != '\0'; ++i)
   {
      fprintf(stdout,"%c",deneme[i]);
      fflush(stdout);
      sleep(1);
   }

}


EK: İki programa da "hoopp"  gibi bir şey yazıp deneyebilirsiniz. 10 karakteri aşmasa iyi olur girdiğiniz... 10 karakterlik dizi açtım çünkü... Nasılsa deneme amaçlı =)




".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

Hakan Yalçın

Kodları inceliyorum. Ama sorunuza cevap vereyim utility.h benim yazdığım bir küçük kütüphane işe yarar fonksiyonları oraya atıyorum :) Tekrar tekrar kopyala yapıştır yerine kütüphaneyi ekliyorsunuz.

Şimdi inceliyorum. Teşekkürler

sem

Alıntı yapılan: Hakan Yalçın - 25 Temmuz 2010 - 14:38:12
Kodları inceliyorum. Ama sorunuza cevap vereyim utility.h benim yazdığım bir küçük kütüphane işe yarar fonksiyonları oraya atıyorum :) Tekrar tekrar kopyala yapıştır yerine kütüphaneyi ekliyorsunuz.

Şimdi inceliyorum. Teşekkürler

Çok mantıklı... Alışamadığım bir şeydir... Muhtemelen yaptığım en büyük hata... Bütün yazdığım fonksiyonları tekrardan yazmak =)

Bu arada konu C'ye taşınsa iyi olur gibi... Yönetici arkadaşlara sesleneyim =)
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

Hakan Yalçın

Flush'layınca sorun çözüldü hocam. Teşekkür ederim.

sem

Diğer sorun çözülmedi ise eğer; masaüstüne sağ tıklayıp, create a launcher diyorsunuz.  "Type" olarak "application in terminal"  seçiyorum.  Dilediğiniz bir ismi verip daha sonra da command bölümüne, mesela çalışabilir dosyanız /home/sem0900/Desktop/dosya dizininde diyelim... Bunu geçiyorsunuz... Bu şekilde yeni oluşturduğunuz dosyaya tıkladığınızda programınızı dediğiniz gbi çift tık ile çalıştırabilirsiniz. Yalnız Windows ortamında olduğu gibi pencerenin hemen kapanamması için heartsmagic'in dediği gibi klavye girişi bekleyen bir fonksiyon koyabilirsiniz... Kolay gelsin...
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

bytan

Konuyu hem taşıyalım hem de kapatalım.

Demek ki kodları görmek faydalıymış. :)

Umut en büyük kötülüktür; işkenceyi uzatır. - F.N.


Bir şey ne ise odur, bu kadar. Öyleyse, iki şey arasında bağdaşıklık varsa, bu aralarında iletişim kuruyorlar demek değildir.
"... kavrayışını bilgi ile derinleştir ..."
PF @ ST