[Çözüldü]C/C++ GTK+ Uygulama yazma?

Başlatan hckr, 07 Eylül 2010 - 13:51:18

« önceki - sonraki »

0 Üyeler ve 3 Ziyaretçi konuyu incelemekte.

hckr

Arkadaşlar daha önce bir c ile hiç bir deneyimimin olmadığını belirterek mesajıma başlıyorum.
Konsol uygulaması değil de pencere uygulaması yapmak istiyorum bunun için gnome'de neleri eklemem lazım kaynak kodlara?
Bir de örnek bir gtk2 uygulaması var mı kaynak kodunu gönderebileceğiniz.

sem

Çok araştırma fırsatım olmadı fakat şu site işinize yarayabilir...

http://www.ibm.com/developerworks/library/os-gtk2/index.html
".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?

hckr

http://wiki.netbeans.org/GtkApplicationInNetBeans sayfasında bir anlatım var orda pkg-config kısmı var orada ne yapmamız gerektiğini bir türlü anlayamadım.

heartsmagic

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.

hckr

Alıntı yapılan: heartsmagic - 08 Eylül 2010 - 02:19:35
http://www.linuxfocus.org/Turkce/May2003/article295.shtml
İngilizce kaynak daha fazladır ama.
Verdiğin adreste verilen komutlar terminal tarafından tanınmıyor.
http://wiki.netbeans.org/GtkApplicationInNetBeans adresinde çeşitli komutlar var ama ne yaplıacağını tam olarak anlamadım komutu yazdığımda altında verilen örnek çıktının benzeri yazıyor.Ancak tam olarak ne yapılacağını anlamadım verilmiş olan kodları derlediğimde saçma sapan hatalar veriyor.Nedenini henüz anlayabilmiş değilim yardımcı olursan sevinirim.

sem

Tam olarak ilgilendiğim bir şey değil fakat öncelikle komutları denemeden önce kütüphaneyi indirmeniz gerekiyor... İndirdiniz mi?

Alıntı Yapİlk Program

Şu anda sisteminizde GTK'nın yüklenmiş olduğunu varsayıyoruz.GTK'nın son versiyonunu ftp.gtk.orgadresinden bulabilirsiniz.

Şeklinde link verilmiş heartsmagic'in verdiği bağlantıda... Benim verdiğim bağlantı içinde de indirmek için adres bulabilirsiniz...
".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?

hckr

Alıntı yapılan: sem0900 - 08 Eylül 2010 - 20:44:36
Tam olarak ilgilendiğim bir şey değil fakat öncelikle komutları denemeden önce kütüphaneyi indirmeniz gerekiyor... İndirdiniz mi?

Alıntı Yapİlk Program

Şu anda sisteminizde GTK'nın yüklenmiş olduğunu varsayıyoruz.GTK'nın son versiyonunu ftp.gtk.orgadresinden bulabilirsiniz.

Şeklinde link verilmiş heartsmagic'in verdiği bağlantıda... Benim verdiğim bağlantı içinde de indirmek için adres bulabilirsiniz...
gtk/gtk.h dosyaları var o kısımda bir ftp adresi verilmiş ancak o kısımdan bir şey indiremedim.Ama şunu söyleyeyim gtk/gtk.h ve diğer gtk header(başlık) dosyaları dizinlerde mevcut.Ayrıca gerekli include dizinlerini de ekledim.Ve bir .so dosyası vardı onu ekledim.
Bir de Netbeans'ın içinde gtk ile yazılmış bir  c++ uygulaması var bu da gtk'nın kurulu olduğu anlamına geliyor sanırım.
Eğer ingilizce biliyorsanız zannediyorum yardımcı olabilirsiniz netbeansın bağlantısındaki kısımları çevirerek.

Teşekkür ederim

sem

İngilizce girince araya ben bir adım geri çekileyim... İngilizce bilen arkadaşlar yardımcı olabilir umarım...

Çok bakma fırsatım da olmadı fakat;


Alıntı Yap$ pkg-config --cflags gtk+-2.0
-I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0
-I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0
-I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12
By providing the --cflags option, we get all necessary include files for a GTK+ 2.0 application.
$ pkg-config --libs gtk+-2.0
-lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0
-lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr
-lXcursor -lXfixes -lpango-1.0 -lcairo -lX11 -lgobject-2.0
-lgmodule-2.0 -ldl -lglib-2.0

Burada link verilecek yollar alınıp tanıtılıyor gibi bir işlem var sanırım... -l ve -I GCC parametreleri.... Kullanılacak dosyaların yerleri belirtiliyor... Mesela matematiksel fonksiyonları kullanacaksanız eğer "#include <math.h>" yeterli olmaz... Derleme aşamasında bağlayıcı için parametre ile "-lm" girmek gerekir gibi... Yani GTK kütüphaneleri bulunsa bile bunları bağlayıcıya tanıtmak gerekebilir...
".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?

hckr

Forumda konsol uygulamaları dışında uygulama geliştiren biri yok mu acaba yardımcı olabilecek  :(

akelek

Netbeans yada herhangi bir editor ile bir C/C++ şu şekilde bir kod yazdın diyelim.Örnek olarak boş bir pencere yapıyorum.


#include <gtk/gtk.h>

int main( int argc, char *argv[])
{
  GtkWidget *window;   //pencere işaretçisi oluşturduk.

  gtk_init(&argc, &argv);

  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);  //pencereyi tanımladık.
  gtk_widget_show(window);

  gtk_main();

  return 0;
}



bunu "ornek.c" ismiyle kaydettim.

terminalde bu kod un bulunduğu dizinde

gcc -o ornek ornek.c `pkg-config --libs --cflags gtk+-2.0`


şeklinde komut vererek derlersin. 

./ornek
ile çalıştırırsın. boş pencere karşına çıkar.

hckr

Sağolun ama bunun netbeans'ta bir ayarı vardır diye düşünüyorum şimdi ne demek istendiğini anladım tüm arkadaşlara teşekkür ederim
netbeans yada eclipse'de bunu sürekli gönderilmesi için ayarı nerede yapacağız.
Yani 'pkg-config --libs --cflags gtk+-2.0'

Saygılar

akelek

verdiğiniz netbeans wiki linkindeki resimler silinmiş. Netbeans indirmeye başladım. birazdan kurup inceleyip dediğiniz gibi ayarını yapmaya çalışıcam. sonuçları buraya yazarım.

tabii alternatif olarak geany kurup geany nin terminal ayar satırlarına
`pkg-config --libs --cflags gtk+-2.0`
bunu ekleyerek her seferinde uğraşmadan geany de tek tıklamayla yapılabilir.

hckr

#12
sağolun gerçekten ancak geany daha önce hiç kullanmadım.Hem php,c,c++'da destekleyen bir ide olduğu için Netbeans'ı kullanıyorum.

Saygılar
Edit:Sanırım girilecek yeri buldum ancak yine hata veriyor malesef :(

heartsmagic

Benim verdiğim bağlantı zaten bir hayli eskiydi, işler değişmiş haliyle. @akelek doğrusunu vermiş, teşekkürler.
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.

hckr

Alıntı yapılan: heartsmagic - 08 Eylül 2010 - 22:10:12
Benim verdiğim bağlantı zaten bir hayli eskiydi, işler değişmiş haliyle. @akelek doğrusunu vermiş, teşekkürler.
Doğrusunu vermiştir ancak halen çalıştıramadım ne consoldan ne de netbeans'tan verilen örnek uygulamayı.

akelek

Netbeans ta şöyle yapılıyor hocam:
Bir proje oluşturup. "file" menüsünden  "project properties" seçip,
projenin c yada c++ olmasına göre seçerek command line -> additional options a `pkg-config --cflags --libs gtk+-2.0` eklersiniz. 1 resim 1000 kelimeden çok şey anlatır :)
ama gtk kütüphanelerinin yüklü olduğundan emin olmalısınız önce. tabii gcc ve g++ ta yüklü olcak

hckr

Mesajımda söylemiştim zaten ekledim ancak halen hata variyor tabi bu sefer farklı hatalat@akalek
Edit: Hata

/usr/bin/make: unrecognized option '--libs'
/usr/bin/make: unrecognized option '--cflags'
Kullanım: make [seçenekler] [hedef] ...
Seçenekler:
  -b, -m                      Uyumluluk için yoksayıldı.
  -B, --always-make           Tüm hedefler koşulsuz olarak oluşturulur.
  -C DİZİN, --directory=DIZIN Birşey yapmadan önce DİZİNe geçilir.
  -b, -m                      Bir sürü hata ayıklama bilgisi basar.
  --debug[=SEÇENEKLER]        Çeşitli türde hata ayıklama bilgileri basar.
  -e, --environment-overrides Ortam değişkenleri makefile'ları değiştirir.
  -f DOSYA, --file=DOSYA, --makefile=DOSYA
                              DOSYAyı bir makefile olarak okur.
  -h, --help                  Bu iletiyi basar ve çıkar.
  -i, --ignore-errors         Komutların ürettiği hataları yoksayar.
  -I DİZİN, --include-dir=DİZİN
                              Eklenecek makefile'ları DİZİNde arar.
  -j [N], --jobs[=N]          Bir defada N işe izin verir; argumansız iş
                              sayısı sınırsızdır.
  -k, --keep-going            Bazı hedefler yapılmadığında devam eder.
  -l [N], --load-average[=N], --max-load[=N]
                              Yük N'den az olmadıkça çoklu işler başlatılmaz.
  -L, --check-symlink-times   Use the latest mtime between symlinks and target.
  -n, --just-print, --dry-run, --recon
                              Gerçekte komutlar çalıştırılmaz, gösterilir.
  -o DOSYA, --old-file=DOSYA, --assume-old=DOSYA
                              DOSYAnın çok eski olduğu varsayılır ve
                              yeniden işlem yapılmaz.
  -p, --print-data-base       make'in içsel veritabanını basar.
  -q, --question              Komut çalıştırmaz; güncelse çıkışta belirtir
  -r, --no-builtin-rules      Oluşumiçi örtük kuralları etkisizleştirir.
  -R, --no-builtin-variables  Oluşumiçi değişken ayarlarını etkisizleştirir
  -s, --silent, --quiet     Komutlar işlenirken gösterilmez.
  -S, --no-keep-going, --stop Bazı hedefler yapılmadığında devam etmez.
  -t, --touch                 Yeniden derlemek yerine hedeflere bakıp geçer.
  -v, --version               make sürüm numarasını basar ve çıkar.
  -w, --print-directory       Kullanılan dizini basar.
  --no-print-directory        Dolaylı olarak açılmış olsa bile -w 'yi kapatır
  -W DOSYA, --what-if=DOSYA, --new-file=DOSYA, --assume-new=DOSYA
                              DOSYA sonsuz yeni varsayılır.
  --warn-undefined-variables  Atanmamış bir değişkene bağıntı yapıldığında
                              uyarır.

Bu program x86_64-pc-linux-gnu için kurgulanmış
Yazılım hatalarını <bug-make@gnu.org> adresine,
çeviri hatalarını <gnu-tr-u12a@lists.sourceforge.net> adresine bildiriniz.

BUİLD FAILED (exit value 2, total time: 307ms)

sem

@akalek siz yazdığınız kod ile boş bir pencere oluşturabildiniz mi?
".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?

akelek

Alıntı yapılan: sem0900 - 08 Eylül 2010 - 22:17:03
@akalek siz yazdığınız kod ile boş bir pencere oluşturabildiniz mi?

evet oluşturdum.
ama öncesinde gerekli olan paketleri kurdum.

sudo apt-get install gcc g++ libgtk2.0-dev

sem

Anladım... Bir ara ben de deneyeyim o zaman... Şimdi Linux'ta değilim... Ama bakmak lazım bir ara =) Sağ ol...
".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?

hckr

Alıntı yapılan: akelek - 08 Eylül 2010 - 22:18:46
Alıntı yapılan: sem0900 - 08 Eylül 2010 - 22:17:03
@akalek siz yazdığınız kod ile boş bir pencere oluşturabildiniz mi?

evet oluşturdum.
ama öncesinde gerekli olan paketleri kurdum.

sudo apt-get install gcc g++ libgtk2.0-dev

Gerekli paketleri indirdim ancak o hataları veriyor neden olduğunu anlayamadım yardımcı olabilir misiniz?

sem

hamzaxx, siz NetBeans dışında uçbirimden derleme yapabiliyor musunuz? Önce onu halledip sonradan parametreyi eklemek daha garanti olacak sanırım. akelek'in verdiği kod ile boş bir pencere oluşturabiliyor musunuz?
".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?

hckr

Alıntı yapılan: sem0900 - 08 Eylül 2010 - 22:30:10
hamzaxx, siz NetBeans dışında uçbirimden derleme yapabiliyor musunuz? Önce onu halledip sonradan parametreyi eklemek daha garanti olacak sanırım. akelek'in verdiği kod ile boş bir pencere oluşturabiliyor musunuz?
Hayır yine hata veriyor :(

sem

O zaman şimdilik NetBeans'ten denemek gereksiz. Öncelikle IDE ile değil doğrudan uçbirimden GCC ile kendiniz derleyebilmeye yönelin... Kendiniz derleyebildiğiniz zaman ki parametreleri aktarırsınız... Şimdilik diyebileceğim bu kadar... Linux üzerinde olmadığım için... Deneme fırsatım olunca ben de dener yazarım size buradan... 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?

akelek

netbeans olmadan denemenizi bir anlatabillir misiniz ?
nasıl bir kod yazdınız? ne hata verdi?
hem c hemde c++ ile netbeans ile vede komut satırından denedim bende hiç sorun çıkmıyor.