Codelite Derleme Sorunu

Başlatan SilverW, 28 Mayıs 2012 - 00:14:45

« önceki - sonraki »

0 Üyeler ve 2 Ziyaretçi konuyu incelemekte.

Hasb-el Lüzûm


sem

Aynı dosyayı gcc daha doğrusu g++ ile derlediğinizde ne diyor?
".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?

ekremsenturk

@Hasb-el Lüzüm
ANSI-C ve C99 farklıdır. Ve Eclipse'te eklentiler kurman gerekiyor. Bunlar kendiliğinden kurulmuyor. İndirilen klasör içinden içe aktarman gerekiyor. Bunları dikkate aldınmı?

sem

ekremsenturk ANSI-C ve C99 farklı derken söylemek istediğiniz nedir?

ANSI-C dediğimiz Standart C'dir, C99 dediğimiz ise standartların 1999 yılındaki revizyon edilmiş halidir. Yanlış bildiğim konuyu açıklayabilirseniz müteşekkir olurum.

Daha sonrada revize edilen özellikler ise daima daha doğrusu genellikle geriye uyumlu olmuyor mu?
".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?

Hasb-el Lüzûm

@sem0900
Şimdi de gcc'yi yüklüyorum. Onunla da deneyelim bakalım.

@ekremsenturk
Eclipse için sözünü ettiklerinize ilişkin hiçbir şey yapmadım. Eclipse içersinde plugins isimli bir klasör var; ama bunların içersinde bir sürü dosya var. Hangi birilerini kullanmam gerekiyor?
Eclipse programında eklentilerin kullanıcılarca kurulması gerektiğini biliyordum aslında; ama bu eklentiler arasında daha işin başında lazım olacak eklentilerin yer almayacağını düşünmüştüm, demek yanılmışım.
Bİrazdan gcc'yi deneyeceğim; ama Netbeans'i de denemek istiyorum. Netbeans programında da benzer bir sorun yaşar mıyım dersin ? Ona göre ona hiç bulaşmayadabilirim.

Kadir Can

@Hasb-el Lüzum;
Şu an en doğru yolda olduğunu düşünüyorum.Bir önceki iletimde de konsoldan derleme yapmanın avantajlı olduğunu belirtmiştim.3 yıldır programlama ile uğraşmaktayım, çok nadiren IDE kullandım.Hazır Linux'a geçmişken makefile yazmayı da öğrenmeni tavsiye ederim.
Belgeler.org Makefile Anlatımı'nı inceleyerek fikir sahibi olabilirsin.

sem

Alıntı yapılan: Hasb-el Lüzûm - 05 Temmuz 2012 - 00:43:26
@sem0900
Şimdi de gcc'yi yüklüyorum. Onunla da deneyelim bakalım.

@ekremsenturk
Eclipse için sözünü ettiklerinize ilişkin hiçbir şey yapmadım. Eclipse içersinde plugins isimli bir klasör var; ama bunların içersinde bir sürü dosya var. Hangi birilerini kullanmam gerekiyor?
Eclipse programında eklentilerin kullanıcılarca kurulması gerektiğini biliyordum aslında; ama bu eklentiler arasında daha işin başında lazım olacak eklentilerin yer almayacağını düşünmüştüm, demek yanılmışım.
Bİrazdan gcc'yi deneyeceğim; ama Netbeans'i de denemek istiyorum. Netbeans programında da benzer bir sorun yaşar mıyım dersin ? Ona göre ona hiç bulaşmayadabilirim.

Eclipse derleyici değildir. O nedene g++ olmadan ya da daha farklı bir derleyici olmadan Eclipse derleme işlemini yapamaz. Bu nedenle önce derleyiciyi kurmak gerekir. Eklenti kurma konusu ise Eclipse'i nasıl kurduğunuza göre değişir. Eğer zaten Eclipse CDT (C/C++ Development Kit) versiyonunu kurduysanız ayrıca bir eklenti kurmanıza gerek kalmaz.

SUDO'da Eclipse anlatımımız vardı, onu okumuş muydunuz?

ANSI-C, C99 vs gibi konular ise doğrudan IDE'nin değil, derleyicinin üzerinde olan görevler aslında, o nedenle bu konuların doğrudan Eclipse ile alakası yok. Ayrıca standartların revizyonu dışında ikisi arasında fark yok diye biliyorum ben.

Örneğin C99'dan önceki standartlarda;

int a = 6;

char dizi[a];

şeklinde değişken üzerinden dizi boyut bildirimi yapılamıyordu ama C99 revizyonu ile bu mümkün. Vs gibi konular var. Tahmin edeceğiniz gibi durumun IDE ile doğrudan bir ilişiği bulunmuyor.
".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?

Hasb-el Lüzûm

Sorun, C'de yaptığım işlemin sonucunu Terminal'de görememem.
Mesela aşağıdaki basit örnekte

#include <stdio.h>
int main(){

printf("CCCCCC");
return 0;
}

Terminal'de CCCCCC çıktısını alamıyorum, Terminal açılıp hemen kapanıyor.
Gcc'yi de indirdim; ama indirdiğim dosyada kurulum dosyası yok ki.

Eclipse programındaysa şu hataları veriyor ;
Error 127 occurred while running autoreconf ---> Type: configure problem
make: *** No rule to make target 'all'. ---> Type: C/C++ Problem

IDE kullanıp kullanmamam önemli değil. Zaten ben Eclipse programını soruna çözüm olabilir düşüncesiyle yüklemiştim.
Sorun nedir, ne yapmam gerekiyor?

Alıntı yapılan: Kadir Can - 05 Temmuz 2012 - 02:37:37
Hazır Linux'a geçmişken makefile yazmayı da öğrenmeni tavsiye ederim.
Bakalım, Ubuntu'dan C'ye daha doğru düzgün ilk adımızı atabilirsek, düşünürüm, sağol.

Alıntı yapılan: sem0900 - 05 Temmuz 2012 - 09:38:01
Eclipse derleyici değildir. O nedene g++ olmadan ya da daha farklı bir derleyici olmadan Eclipse derleme işlemini yapamaz. Bu nedenle önce derleyiciyi kurmak gerekir. Eklenti kurma konusu ise Eclipse'i nasıl kurduğunuza göre değişir. Eğer zaten Eclipse CDT (C/C++ Development Kit) versiyonunu kurduysanız ayrıca bir eklenti kurmanıza gerek kalmaz.

Evet Eclipse CDT olanını kurmuştum.

Kadir Can

Biraz daha temelden bir anlatım yapayım o zaman.
İlk önce gcc kurmanız gerekmekte, ama yanlış hatırlamıyorsam gcc kurulu geliyordu.Anlamak için şöyle bir komut kullanacağız:
gcc -v
Çıktısı şuna benziyorsa gcc kuruludur:
Using built-in specs.
Target: i386-undermydesk-freebsd
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 4.2.1 20070831 patched [FreeBSD]

Burada önemli olan gcc version 4.2.1'e benzeyen satırı görebilmektir.Eğer kurulu değilse sudo apt-get install gcc komutula gcc'yi kur.Daha sonra kodları yaz ve kodların olduğu dizinde konsolu aç.gcc dosyaismi -o dosyaismi komutuyla derle.Daha sonra ./dosyaismi komutuyla programı çalıştırabilirsin.

Hasb-el Lüzûm

Nİhayet oldu. Bu yöntem işe yarıyor, hattâ en başta gcc yazmadan da işlemler sorunsuz bir şekilde uygulanıyor.
İyi güzel; ama her işlem yenilemede Terminal'e sürekli ./dosya ismi şeklinde giriş yaptırmak usanç verici.
Windows'ta olduğu gibi exe uzantılı dosyaya çift tıkladığımızda console penceresinin kendiliğinden açılmasını Ubuntu'da nasıl sağlayabileceğiz? Bir başka deyişle, c ya da o uzantılı dosyanın varsayılan işlem görme programını Terminal olarak nasıl atayabileceğiz? c ya da o uzantılı dosyalar için seçilebilecek programlar listesinde Terminal yok...

ekremsenturk

#35
@Hasb-el Lüzûm, Windows'taki çalıştırılabilir dosyalar, belirttiğin gibi .exe formatındadır. Linux'taki çalıştırılabilir dosyalar, Windows'ta derlemiş olduğun aynı kaynakkod'u derlemiş olsan dahi, .exe formatlı dosyalar ile aynı değildir. Aradaki sadece bir isime bir uzantı ekleme farkı değildir. Yine Linux, Microsoft'un farklı bir Windows sürümü değildir. Dolayısı ile de bazı şeyler farklı çalışır. Windows'ta çalışanlar, Linux'ta çalışmaz ve Linux'ta çalışanlar Windows'ta çalışmaz. Aradaki farkları ve nedenlerini zaman içinde öğrenirsin ve kendin yorumlarsın.

@sem0900, @Hasb-el Lüzüm'un Eclipse'de nasıl derlediğini tarif ederken, ANSİ-C seçtiğini gördüğüm için, aradaki farkı bilip bilmediğini sormuştum. Şahsen aradaki farkı bilmiyorum. Ama farklı bir standart'ta yazılan kod'lar yine farklı derlenir. Dolayısı ile standat C ile yazılmış kodlar, ANSİ-C modunda hata verecektir. GCC'de ANSİ-C kodları c89 komutu ile derleniyor. Daha önce, keşfettiğim bir kaynaktan derlemeye çalıştığım kod'larda, "Eski usül yazılmış" anlamına gelen hatalar alıyordum ve GCC ile derlenmiyorlardı.

Hasb-el Lüzûm

@ekremsenturk, derleme sonrası oluşan o uzantılı dosyaya çift tıkladığımzda sanki Terminal'e ./dosya_ismi yazmışızcasına Terminal'in devreye girebilmesini sağlayabilmemizin mümkün olup olmadığını öğrenmek istemiştim tam olarak.

hckr

Alıntı yapılan: Hasb-el Lüzûm - 07 Temmuz 2012 - 18:28:54
@ekremsenturk, derleme sonrası oluşan o uzantılı dosyaya çift tıkladığımzda sanki Terminal'e ./dosya_ismi yazmışızcasına Terminal'in devreye girebilmesini sağlayabilmemizin mümkün olup olmadığını öğrenmek istemiştim tam olarak.
Sağ tıklayıp özelliklerden çalıştırılabilir yaparsanız sanırım istediğinizi sağlayacaktır.

Hasb-el Lüzûm

@hckr, onu da denemiştim zaten. Öyle yaptığımda dosyanın yürütülmek üzere herhangi bir programla ilişkilendirilmediği, ilişkilendirilmesi gerektiği uyarısını veriyor. Tercih edilebilir programlar arasındaysa mahallesef Terminal yer almıyor.

hckr

Alıntı yapılan: Hasb-el Lüzûm - 07 Temmuz 2012 - 19:02:02
@hckr, onu da denemiştim zaten. Öyle yaptığımda dosyanın yürütülmek üzere herhangi bir programla ilişkilendirilmediği, ilişkilendirilmesi gerektiği uyarısını veriyor. Tercih edilebilir programlar arasındaysa mahallesef Terminal yer almıyor.
Anladım da sanırım bir şekilde pencere açılıyordu uçbirimde çalıştır seçeneği geliyordu bildiğim kadarıyla.

Hasb-el Lüzûm

Hmm..  Dosyanın, program olarak çalıştırılmasına izin verdiğime ve tercih edilebilir programlar listesinde Terminal'in yer almadığına eminim.
Belkide 12.04 LTS sürümüne özgü bir sorundur bu.

hckr

Alıntı yapılan: Hasb-el Lüzûm - 07 Temmuz 2012 - 19:28:03
Hmm..  Dosyanın, program olarak çalıştırılmasına izin verdiğime ve tercih edilebilir programlar listesinde Terminal'in yer almadığına eminim.
Belkide 12.04 LTS sürümüne özgü bir sorundur bu.
Hocam şimdi denedim herhangi bir uzantısız dosyayı çalıştırabilir yaptığınız zaman pencere açılıyor 4 tane button çıkıyor en soldakinde Run in terminal yazıyor.Herhangi bir programla ilişkilendirmedim.

ekremsenturk

#42
@Hasb-el Lüzûm, kısaca Windows'taki gibi linux'ta dosyalar varsayılan olarak tek tıkla çalıştırılamıyor demek istemiştim.  Ama istisnalar var. Grafiksel programlar, tıklandığında çalışıyorlar. Terminal programları için ise, bir klasör aç ve /Düzen/Tercihler/Davranış seç ve "Açıldığında çalıştırılabilir metin dosyalarını çalıştır" seç ve ardından çalışmasını istediğin dosyaların her birini teker teker çalıştırılabilir dosya olarak işaretle. Bu şekilde dene (Kendim denemedim) Sadece çalıştırılabilir olarak işaretlenen dosyalar ve sadece senin Bilgisayar'ında çalışacaktır.
Düzeltme: Bu yöntem ile sadece grafiksel programların veya grafik Terminal'lerin başlatıcıları sorgusuz açılabiliyor.

Diğer yöntemler:
1. Masaüstünde, masaüstüne bir boş alana sağ tıklayarak bir başlatıcı oluşturabilirsin ve" Terminalden çalışan Program" seçebilirsin ve dosya yolunu takip ederek, çalıştırmak istediğin programını başlatıcıya ekleyebilirsin. Masaüstün biraz kalabalıklaşabilir.
2. Veya kendin bir başlatıcı dosyası (.sh dosyası) yazabilirsin. bir örnek yazayım, sen de benzerlerini yazarsın.
#!/bin/sh
./program_adı

Bu Unix shell dosyası, program ile aynı klasörde bulunmalı ve tabii çalıştırılabilir dosya olarak işaretlenmeli. .sh uzantılı dosyalar ile dosya yolunu belirterek, farklı klasörlerdeki programlarınıda çalıştırabilirsin veya farklı işlemler yönetebilirsin. Bulduğun örnrklerden kopya çekebilir ve kendi ihtiyaclarına göre düzeltebilirsin.

( Bu arada, Windows'tada bir exe uzantılı dosyanın üstüne tıklamak hiç de sağlıklı değildir. Dosya bir program olarak çalışmak yerine, yeniden kuruluma geçebilir veya güncellenmiş bir programın eski sürümü yeni sürümün üzerine yazabilir. )

Hasb-el Lüzûm

@hckr, bir yanlış anlaşılma sözkonusu galiba. Çünkü sözkonusu olan herhangi bir dosya değil, c dosyalarının derlenmesi sonucu sistem tarafından üretilen o uzantılı dosyalar.
@ekremsenturk, söylediklerini bir ara uygulamayı düşünüyorum.
Sorunla ilgilenen bütün arkadaşlar, sağolasınız, çok alâkadar oldunuz, çalışmalarınızda başarılar ve kolaylıklar dilerim.

Kadir Can

Yanlış hatırlamıyorsam .o uzantılı dosyalar çalıştırılamıyor.Çalıştırılabilmesi için bir bağlayıcı(linker) ile bağlanması ve çalıştırılabilir dosyaların oluşturulması gerekiyor.

sem

@Kadir Can yanlış hatırlamıyorsunuz. Nesne (object dosyaları, yani .o uzantılı dosyalar) dosyalarının bağlama aşamasından geçmesi gerekiyor çalışan dosya haline gelebilmesi için..
".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?