Ubuntu'da C++ derleyicisi?

Başlatan bluefire, 06 Nisan 2008 - 17:26:24

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

j1647

Alıntı yapılan: matafleur - 17 Temmuz 2008 - 02:49:20
mümkünse linux üzerinde linux programlarını kullanmaya özen göstermeni tavsiye ederim.wine bir alternatif ama çok da güzel bir alternatif değil

Eğer dev c++ kullanmaya alıştıysan daha öncede yazdığım gibi codeblocks u bir denemeni öneririm.

http://www.codeblocks.org/downloads/5

aslına dogru soyluyorzsun... sana katılıyorum.. sonucta forever linux dedik bi kere nicin wine kullanalım kii belki cok zorunluluk duurmlarında... alternatiflere bakıyourm hemen... öncelikle geany i cözeyim bakalım :)neymiş sorun :)

medyant

Selam arkadaşlar ben de gcc yi kullanmaya çalıştım fakat ncurses header'ini bir türlü gösteremedim. sorun nedir anlayamıyorum?

heartsmagic

Gerekli kütüphaneleri kurdun mu peki?
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.

benimadimneydi

Alıntı yapılan: SoulSmasher - 19 Nisan 2008 - 02:01:52
gcc ile derlerken pek çok kütüphane dev-cpp ye göre uyumsuzluk yapıuyor. ayrıca c++ olarka c kodları birebir aynısı olarak algılanır möı (yani .c++ içerisinde c kodu girilip derlendiğinde) emin değilim, denemedim onu bu yüzden  :-\
merhaba,
mesajlara bakarken kafama takıldıda (bu arada rasgele bi alıntı yaptım bi kaç kiş de aynı şeyi demiş)
dev-cpp da gcc derleyicisini kullanmıyor mu? yoksa ben mi yanlış biliyorum dev-cpp de de c kodlarında çoğu standart olmayan şeyde hata veriyor ve verir de.bi fark olmuyor ki ha gcc de derlemişsin ha dev-cpp da sadece linux ve findows ayrımı ufak tefek şeyler oluyor.

matafleur


emrahgny

benimde aklımada bi soru takılıdı ben linux'da conio.h kütüphanesini neden çalıştıramıyorum? windows'da borland c++ kullanıyorum onda yaptıgım çogu kodda bu kütüphaneyi kullandım özellikle getch(); komutunu linux'da çalışmıyor bu sorunu nasıl çözebilirim.. aydınlatırsanız sevinirim...

erginemr

#31
Bu başlıklarda:
http://forum.ceviz.net/conio-h-vs-curses-h-sorunsali-t23071.html?t=23071
http://ubuntuforums.org/showthread.php?t=79324

conio.h'nin (console input/output) DOS/Windows'taki C derleyicilerine has bir kütüphane olduğu, Linux'ta gcc'de bulunmadığı belirtilmiş.

xaph

bildiğim kadarıyla ubuntu'da standart kurulum ile g++ kurulu olarak gelmiyor. Ve C++ kodlarını derlemiyor.
kurmak için,
sudo apt-get install g++
komutunu verebilirsiniz. Ayrıca diğer geliştirme paketlerini kurmak için
sudo apt-get install build-essentials
komutunu kullanabilirsiniz.

emrahgny

aydınlatma için sagolun linux'da conio.h kütüphanesi yok evet. peki ben linux'da getch() yada clrscr() kodlarına benzer kodları  çalıştırarak aynı işlemi yaptıramazmıyım? bunları bilen varsa söylerse sevinirim...

xaph

Alıntı yapılan: blacklist - 15 Ağustos 2008 - 01:04:58
aydınlatma için sagolun linux'da conio.h kütüphanesi yok evet. peki ben linux'da getch() * ya da clrscr() kodlarına benzer kodları  çalıştırarak aynı işlemi yaptıramazmıyım? bunları bilen varsa söylerse sevinirim...

getch ile ne yapacaksın tam olarak bilmiyorum ancak istersen herhangi bir karakter tanımlayıp sonra da o karaktere input isteyerek aynı işi gerçekleştirebilirsin.
Ör:
char ch;
//senin kodun
scanf("%c", &ch); //getch() ile aynı işi yapan satır

şeklinde

erginemr

Şu başlıklarda, getch()'nin libncurses5-dev paketi (ncurses=konsolda diyalog kutuları uygulaması) ile birlikte geldiği anlatılıyor:
http://www.belgeler.org/howto/gcc-baslangic-basit.html
http://ubuntuforums.org/showthread.php?p=5527694
http://ubuntuforums.org/showthread.php?t=724320

sudo apt-get install build-essential
sudo apt-get install libncurses5-dev


Bu paketleri Synaptic'ten kurduktan sonra "conio.h" yerine "#include <ncurses.h>" ile bu işlemi yaptırabileceğinizi düşünüyorum. Ancak ncurses kütüphanesini komut satırında da aşağıdaki şekilde bağlamanız gerekebiliyormuş. Örnek bir "test.c" dosyası için:
gcc test.c -o test -lncurses


emrahgny

evt linkde yazan kodda getch()  var ve o şekilde kullanınca çalışıyor fakat ben
#include<ncurses.h>
int main()
{
initscr();
getch();
endwin();
printf("getch'de is gördü\n");
initscr();
getch();
endwin();
printf("2.getch de calıstı");
}

gcc ilk211.c -o ilk211 -lncurses
bir sorun yok derlemede fakat
./ilk211.c  diye çalıştırdıgımda
"bash: ./ilk211.c: Permission denied" reddediliyorum


xaph

Alıntı yapılan: blacklist - 15 Ağustos 2008 - 15:48:21
evt linkde yazan kodda getch()  var ve o şekilde kullanınca çalışıyor fakat ben
#include<ncurses.h>
int main()
{
initscr();
getch();
endwin();
printf("getch'de is gördü\n");
initscr();
getch();
endwin();
printf("2.getch de calıstı");
}

gcc ilk211.c -o ilk211 -lncurses
bir sorun yok derlemede fakat
./ilk211.c  diye çalıştırdıgımda
"bash: ./ilk211.c: Permission denied" reddediliyorum



senin sorunun izinlerden kaynaklanıyor.
derledikten sonra,
sudo ./ilk211.c
diyerek çalıştırmayı deneyebilir misin?

emrahgny

"sudo: ./ilk211.c: command not found" yani sizin bilgisayarınızda çalışıyormu bu kodlar belki ben hata yapyorumdur ?

erginemr

#39
"-o" parametresi ile derlenen programın ismi "ilk211.c" değil, ya "ilk211" ya da "ilk211.out" olmalı. "ls" ile klasörün içeriğini listelerseniz bulacaksınız.

emrahgny

dogru benim hatam! saolun! birde merak ediyorum getch() i her kullandıgım yere  initscr(); endwin(); eklemek zorundamıyım?

erginemr

#41
C dilini bilmediğim için pek bir şey diyemeyeceğim. Ancak aşağıdaki belgelere bakılırsa:
http://www.textara.com/unix-linux-kod-komutlari-bilgileri?page=0%2C70
http://wiki.linux-sevenler.org/index.php/NASIL_gcc_kullan%C4%B1m%C4%B1
http://www.mv.com/users/drd/ncurses-intro.html

Bu ncurses kütüphanesi ile ilgili bir durum ve bu satırlar terminal ekranı kullanımını başlatmaya ve bitirmeye yarıyor. (Diğer dillerdeki grafik için canvas oluşturma, ya da class/nesne oluşturup hafızadan temizleme benzeri bir mantığı var sanırım.) İsterseniz bu satırları silip de bir deneyin, program çalışıyor mu diye...

emrahgny

Denedim fakat çalışmıyor çünkü sonsuz döngü hatası veriyor.. sanırım böyle kullanmak zorundayım yinede hiç kullanamamaktan iyidir elim yorulmaz iki kod daha fazla yazınca. ilgilendiginiz için çok teşşekürler

heartsmagic

getch yerine bazıları getc alternatifini önermiş ancak senin istediğini yapabilir mi bilemiyorum.
http://www.icewalkers.com/Linux/ManPages/getc-3.html
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.

raixu

Alıntı yapılan: medyant - 18 Temmuz 2008 - 18:40:05
Selam arkadaşlar ben de gcc yi kullanmaya çalıştım fakat ncurses header'ini bir türlü gösteremedim. sorun nedir anlayamıyorum?

paket yoneticisinden ncurses i kur ardindan programini derleken -lncurses parametresini gir

$ cc my_program.c -o my_program.out -lncurses

Gundam

#45
Merhabalar; dün gece bu saatlerde bende linux kullanmaya başladim :)
ilk 4 saatim tam bir kabus olmasına rağmen, daha sonra neyin ne olduğunu öğrenmeye başladım yavaş yavaş.

sistemimde ilk yaptığım şey, windows ta kullandığım devcpp gibi bi ide bulup, bunu çalışır hale getirmem oldu.
bunu nasıl yaptığımı adım adım yazmak istiyorum, çünkü ben bulamamıştım ve gerçekten çok acı çekmiştim :)
umarım birilerine yardımcı olur :)

1. gcc için gerekli dosyaların ve ncurses dosyalarının sisteme kurulumu

bu gerekli dosyalar (essential)  sizin metin editorleriyle yazdiğiniz kodları gcc ile derleyip, çalıştırmanızı sağlıyor.
ncurses dosyası ise, windows işletim sisteminde kullanılan derleyicilerdeki conio.h dosyasının linux versiyonu gibi bişey.

gcc gerekli dosyalar kurulumu :
sudo apt-get install build-essential

ncurses kurulumu :
sudo apt-get install libncurses5 libncurses5-dev

bunları hatasız tamamlarsanız, gerekli dosyalarımız kurulmuş oluyor.

2. konsoldan gcc kullanarak derleme && çalıştırma

ornek.c :

#include <stdio.h>

int main()
{
printf("hello\n");
return 0;
}


yazmış olduğumuz bu programı 2 adımda çalıştırabiliriz.

1 - Programın Derlenip Çalıştırılabilir Hale Getirilmesi
2 - Programın Çalıştırılması

konsoldan ornek.c dosyamızın bulunduğu klasöre geldikten sonra :

programın derlenip çalıştırılabilir hale getirilmesi :
gcc -o ornek ornek.c

programın çalıştırılması
./ornek

yapılan işlemlerin çıktısı şu şekilde olacaktır :

tux@Gundam00:~/Masaüstü$ gcc -c ornek.c
tux@Gundam00:~/Masaüstü$ gcc -o ornek ornek.c
tux@Gundam00:~/Masaüstü$ ./ornek
hi
tux@Gundam00:~/Masaüstü$


NCURSES kullanan program derleme && çalıştırma :

ncornek programının kaynak kodu:

#include <curses.h> //conio.h kutuphanesine benziyor bu
#include <stdio.h>
int main(){

initscr();
cbreak();
printw("NCurses Kutuphanesi Kullanan Getch() li Program");
getch();
endwin();

return 0;
}


derlenip çalıştırılması:

gcc  -l curses -o ncornek ncornek.c
./ncornek


ekran çıktısı:

NCurses Kutuphanesi Kullanan Getch() li Program









Code::Blocks Kullanarak Programlama

Bu Adresteki kurulum yönergelerini izleyerek Code::Blocks'u kurabilirsiniz.

Code::Blocks'u kurduktan sonra, basit bi helloworld yazıp çalıştırdığımda, açılan konsolda locale_tr.TR tarzı bi hata alıyordum.
ve programın çıktısını göremiyordum.sonra Code::Blocks'un
Settings -> Enviroment menüsüne girip
Terminal to launch console programs :
varsayılan değeri,

gnome-terminal --hide-menubar --title=Output -x

bununla değiştirdim.
artık Code::Blocks'ta yazdığım programları, derleyip, çalıştırabiliyorum rahat bir şekilde:)

Code::Blocks'a Ncurses kütüphanelerini tanıtmak:

Programda Settings -> Complier And Debugger Settings menüsüne gelin.
Global Complier Settings sekmesini tıkladığınızda, orta bölümde Linker Settings bölümü gözükecektir.
Bu bölüme girin, alt tarafta bulunan Add tuşuyla;

/lib/libncurses.so.5
/lib/libncurses.so.5.6
/lib/libncursesw.so.5
/lib/libncursesw.so.5.6


dosyalarını ekleyin.

bundan sonra <curses.h> kullanarak yazdığınız programlarda, derlenip, konsolda sorunsuzca çalışacaktır.

İyi Geceler && İyi Bayramlar;

Edit : heartsmagic'in uyarısı üzerine duzenlenmiştir :D
Teşekkürler :)
Acer 5920 :: Ubuntu 8.04 x64

heartsmagic

Programın derlenmesi ve çalıştırılabilir hale getirilmesi neden iki adım?

gcc -o isim kaynak.c

şeklinde tek adımda derlenip, çalıştırıabilir bir dosya ortaya çıkması lazım.
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.

dcgulse

Merhabalar bende C ve C++ hakkında biraz yorum yapmak istiyorum. Eksiklerim için kusuruma bakmayın lütfen.

Öncelikle ben C öğrenip daha sonra C++ a geçtim. Bana göre C++ da sorun tanımlamak ve program yazmak daha kolay geldiğini belirtmek isterim.

C yapısal(structured) programlama mantığına uygun bir dildir. C++ ise nesneye dayalı(object oriented) programlama için kolaylık sağlar çoğunlukla. C++ da da yapısal programlama yazılabilir. Fakat nesneye dayalı programlama için oldukça elverişlidir.(object oriented programming languages , java , C# etc.).

C programlama dillerinin temelinde olan bir dildir ve kuralları çok serttir. Esnetilmesi çok zor bir dildir. C++ da çok sert bir dildir esnetmek pek mümkün olamaz fakat iki programlama felsefesine de uygun olduğu için insanlara daha kullanışlı görünür.

C++ ın nesneye dayalı programlama yakınlığı ve C ye göre doğal farklılıkları:
--Sınıflar(Class) ve nesneler(Object) yaratılabilir.(ki C ye göre temel farklılığıdır).
--C de yapılar(Struct) oluşturabilirsiniz fakat bu C++ daki sınıfların(Class) yerini tutmayacaktır. Çünkü yapılarda fonksiyonları barındıramazsınız.
****C++ sınıfların gelmesiyle beraber yeni özellikler kazanmıştır
--Operator overloading
--Inheritance
--Polymorphism(comes from Inheritance)
--Vectorler(Dizilerden daha kullanışlı bir sınıf yazılmış).
--String sınıfı yazılmış(C deki char pointerları yerine).
--Template sınfı yazılmıştır ki bu C++ ın en kullanışlı ve güçlü özelliklerinden biridir. Fakat dikkatli olunması gerkeklidir çünkü çok güçlü bi özelliktir ve güç yanında tehlikeyide getirir.(bu aynı zamanda Java da Generic lere karşılık gelmektedir.).
--Exceptionlar vardır. C de hata yakalama daha farklı töntemlerle yapılabilir mesela error stream e işaret göndermek bunlardan biridir. Fakat burada bahsettiğimiz exceptionlar daha kullanışlı ve şık bir program kontrolünü elinizde bulundurmanızı sağlar.
--Ayrıca STL(Standart Template Library) yazılmıştır ki bu kocaman bir kütüphanedir ve programcının birrçok zaman imdadına koşar. İçerik hakkında birkaç örnek vermek gerekirse: Iterators , containers etc.
--Bunların dışında genel olarak C dilinden alınmıştır ve bilinen çok basit looplar kontrol yapıları(if ...) neredeyse bir kaç değişiklik dışında tamamen aynıdır.

Şimdilik bu kadar yazıyorum daha sonra devam ediceğim elbetteki. Eksiklerimi arkadaşlarımın yardımıylada kapatmak isterim. Kolay gelsin herkese:)

heartsmagic

İlk iletide böyle güzel bir açıklama.
Devamı umarım gelir, hoş geldin.
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.

btermeli

@Gundam bunu nasil yaptin? :)
Kod:
Alıntı Yap#include <stdio.h>

int main()
{
printf("hello\n");
return 0;
}
Ciktisi:
Alıntı Yaptux@Gundam00:~/Masaüstü$ gcc -c ornek.c
tux@Gundam00:~/Masaüstü$ gcc -o ornek ornek.c
tux@Gundam00:~/Masaüstü$ ./ornek
hi
tux@Gundam00:~/Masaüstü$


Duvarları olmayan bir dünyada, neden pencerelere ihtiyaç duyayım ki???