Forum: D Programlama Dili RSS
gtkD'nin kurulması (ikinci deneme)
Page:  1  2  next 
acehreli (Moderator) #1
User title: Ali Çehreli
Member since Jun 2009 · 2279 posts
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
Subject: gtkD'nin kurulması (ikinci deneme)
gtkD'yi dsss ile kurmaya debelendikten sonra, dizinde bir de GNUmakefile dosyası olduğunu farkettim. Yani dsss'ye gerek olmadan da kuralabiliyormuş! :) Buna rağmen neden dsss'yi önerdiklerini anlamış değilim. (?)

Adımlar:

1) Sisteminizde gtk kurulu olmalı

Sisteminizde gtk'nin kurulu olduğundan emin olun. Benim denediğim xubuntu 9.10'da zaten var. Eğer gtk kurulu değilse, sisteminizin paket yöneticisi ile kurun. (Tam olarak hangi paketlerin olduğunu bilmiyorum ama yeni sistemlerde kurulması bile gerekli olmamalı. En azından xubuntu'da kurulu olarak geliyor.)

2) dmd'nin kurulması

gtkD'nin dmd'nin şu sürümleriyle derlenemediğini biliyoruz: 2.038, 2.039, ve 2.040. Herhalde 2.041 ile de derlenemiyordur; çünkü inout belirtecinin anlamı değişmişti.

O yüzden, ilk adım olarak dmd 2.037'yi kurun.

2a) Şuradan indirin:

  http://ftp.digitalmars.com/dmd.2.037.zip

2b) Şuradaki adımları izleyerek kurun:

  http://ddili.org/kurulum/dmd.html

3) gtkD'nin kurulması

3a) Şu adresten indirin ve istediğiniz bir dizine açın (örneğin ~/gtkD):

  http://dsource.org/projects/gtkd

3b) O dizine geçin ve make'i çalıştırın:

 cd ~/gtkD
 make
 sudo make install

Sanırım hepsi o kadar! :)

gtkD dizininde bir test programı oluşuyor:

 ~/gtkD/TestWindow

Çalıştırdığınızda bir çok gtk olanağını gösteren bir program açılıyor.

Uyarı: Programın Threads sekmesi herhalde doğru çalışmıyor; çünkü Stop düğmesine basınca sanki çalışmaya devam ediyor. Bir deneme programı olduğu için, belki de Stop düğmesi zaten bir şey yapmıyordur. Bir de Idle sekmesinde oynarken sistemin kilitlendiği oldu. Neden olduğunu tahmin bile edemeyeceğim. :)

Ali
canalpay (Moderator) #2
User title: Can Alpay Çiftçi
Member since Jul 2009 · 1032 posts · Location: İzmir
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
gtkD'nin dmd'nin şu sürümleriyle derlenemediğini biliyoruz: 2.038, 2.039, ve 2.040. Herhalde 2.041 ile de derlenemiyordur; çünkü inout belirtecinin anlamı değişmişti.

Svn'den edinirseniz derleyebilirsiniz.

En azından ben dmd 2.040 ve 2.041 ile derleyebildim :-) Ve sanırım daha önce çalışmamasının sebebini de buldum.
Ben svn kayıtlarında 2.040 için düzenlendi sözünü duyunca 2.040 ile derlemeye çalıştım ama indirdiğim sürüm eski olan 1.3.2 eski bir sürüm. En güncel için svn ile edindim ve şuan taş gibi çalışıyor sayılır :-)

Ama ne yazık ki sizin belirttiğiniz hata bende de oldu. Belki örnekte kodlanırken yanlış kodlanmıştır. Aslında hata kaydı açmak gerekir, yada forumunda sormak ?
canalpay (Moderator) #3
User title: Can Alpay Çiftçi
Member since Jul 2009 · 1032 posts · Location: İzmir
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
Şuan kendim bir gtk uygulaması derlemeye çalıştım ve ne yazık ki derleyemedim.

deneme.d dosyam:
import gtk.MainWindow;
import gtk.Label;
import gtk.Main;
 
void main(string[] args)
{
    Main.init(args);
    MainWindow win = new MainWindow("Hello World");
    win.setDefaultSize(200, 100);
    win.add(new Label("Hello World"));
    win.showAll();
 
    Main.run();
}

derlemek için verdiğim komut :
dmd deneme.d libgtkd.a

Verdiği hata :
deneme.d(1): Error: module MainWindow cannot read file 'gtk/MainWindow.d'
acehreli (Moderator) #4
User title: Ali Çehreli
Member since Jun 2009 · 2279 posts
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
Şu anda tam çözümüne bakamıyorum ama büyük olasılıkla dmd'ye -I (büyük i) seçeneği ile gtk dizininin nerede olduğunu söylemen gerekiyor. Örneğin:

  dmd deneme.d libgtkd.a -I~/gtkD/src/

Ondan sonra da bağlayıcı hatası alabilirsin. O zaman da -L-l (ikincisi küçük L) ile kütüphane dosyasını göstermen gerekebilir:

  dmd deneme.d libgtkd.a -I~/gtkD/src/ -L-lDD-gtk

.a kütüphane dosyalarını da aynı dizinde görüyorum: ~/gtkD/src/

Umarım bu kadarı yeter. Zaman bulunca sonra yine yazacağım.

Ali
This post was edited on 2010-03-09, 09:32 by acehreli.
canalpay (Moderator) #5
User title: Can Alpay Çiftçi
Member since Jul 2009 · 1032 posts · Location: İzmir
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
  dmd deneme.d libgtkd.a -I~/gtkD/src/

Burada dediğiniz gibi bağlayıcı hatası verdi.
  dmd deneme.d libgtkd.a -I~/gtkD/src/ -L-lDD-gtk

Ama burada şöyle bir hata verdi:
/usr/bin/ld: cannot find -lDD-gtk
collect2: ld returned 1 exit status
--- errorlevel 1
acehreli (Moderator) #6
User title: Ali Çehreli
Member since Jun 2009 · 2279 posts
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
Çalıştı! :)


~/deneme/d$ dmd deneme.d -I~/gtkD/src -L-ldl -L-L~/gtkD/src -L-lgtkd
~/deneme/d$ ./deneme

Ali
canalpay (Moderator) #7
User title: Can Alpay Çiftçi
Member since Jul 2009 · 1032 posts · Location: İzmir
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
Benimkide çalıştı. Çok güzel, hiç bir gui'yi bu kadar çok sevmemişimdir. Hatta ilk kez çalıştırdığım gui bile buna dahil.

Şu D emin adımlarla benim istediğim programlama dili kıvamına geliyor :-)

Şuan web için mi kullansam, gui için mi, yoksa konsol yeter mi diye istediğimi diyebiliyorum :-)

Ayrıca bir std.path modülü ile yazılımın büyük bir kısmını bağımsız yazabiliyorum.

Ama şu kodda derleyice verdiğimiz komutların anlamını bilmek isterim:
~/deneme/d$ dmd deneme.d -I~/gtkD/src -L-ldl -L-L~/gtkD/src -L-lgtkd

Ayrıca şuana kadar tek sıkıntım nyp'de opCast gibi şeylerde o da gülün dikeni :-)
This post was edited on 2010-03-09, 11:10 by canalpay.
acehreli (Moderator) #8
User title: Ali Çehreli
Member since Jun 2009 · 2279 posts
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
Benim de bayağı hoşuma gitti. :)

Dün akşam QtD ile de uğraşmaya başladım ama Qt o kadar büyükmüş ki, daha onun kurulumu anca bitti! :) Tanıtım programları harika ama. Qt'yi daha önceden biliyordum ama bu kadar gelişmiş olduğunu tahmin bile edemezdim. (Gerçi belki onun rakipleri de öyledir; ben görsel konulara uzağım.)

-I, "import edilen" modül dosyaları için hangi dizinlere bakılacağını belirtir; dmd onlar için oralara da bakar. -I, C ve C++'da da standarttır ve onlarda da "#include edilen" başlık dosyalarının nerede bulunacağını bildirir.

-L, dmd'nin hiç ilgilenmeden doğrudan bağlayıcıya geçirdiği seçenekleri belirtir. Seçeneklerin ayrı ayrı belirtilmeleri yerine, tek bir seçenek olarak ve belki de çift tırnaklarla -L"..." gibi belirtilebilmelerini beklerdim ama öyle yapmamışlar.

dmd'nin -L seçeneği ile bağlayıcının -L seçeneğini karıştırmamak gerekir. Yukarıdaki komutta dmd'nin geçirdiği iki farklı bağlayıcı seçeneği var:

1) Bağlayıcının -L seçeneği, kütüphane dosyaları için hangi dizine bakılacağını bildirir

2) Bağlayıcının -l seçeneği, kütüphane dosyasının kısa ismini belirtir. Bağlayıcı, kısa ismin başına lib, sonuna da .a yerleştirir. Yani -ldl, "libdl.a kütüphane dosyası ile bağla" anlamına gelir. (dl, "dynamic loader" (belki de "linking" (?)) kütüphanesidir ve /usr/lib'de bulunur)

Ali
Mengu (Moderator) #9
User title: NONSERVIAM
Member since Jul 2009 · 254 posts · Location: Dersaadet
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
abi qt'nin d bindingi saniyorum en mukemmel qt olayi olmus. python bindingi bile o kadar can sikici ve bunaltici ki, suradakiler http://www.dsource.org/projects/qtd/browser/examples/mainw… ne kadar guzel geldi gozume..
http://www.mengu.net - ki$isel bili$im guncesi.
acehreli (Moderator) #10
User title: Ali Çehreli
Member since Jun 2009 · 2279 posts
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
QtD'nin kurulmasını ayrı bir konu olarak açtım. Neredeyse olacak! :) Benim 8G seçtiğim sanal makine diski yetmedi.

Ali
Mengu (Moderator) #11
User title: NONSERVIAM
Member since Jul 2009 · 254 posts · Location: Dersaadet
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
benim sistemde Qt mevcut fakat QtD 4.6.2 istiyor, bende 4.5 var. sistem otomatik mi yuklemisti yoksa ben mi kurmustum hatirlamiyorum o yuzden qt surumunu yukseltmedim.

gtkD klasorune gectim, make dedim ve hata aldim:

dmd -O -Isrc -c src/atk/EditableText.d -ofsrc/atk/EditableText.o
src/atk/EditableText.d(145): Error: inout on parameter means inout must be on return type as well (if from D1 code, replace with 'ref')
make: *** [src/atk/EditableText.o] Error 1

nedir bu bahtsizligim anlamis degilim.
http://www.mengu.net - ki$isel bili$im guncesi.
acehreli (Moderator) #12
User title: Ali Çehreli
Member since Jun 2009 · 2279 posts
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
Hey! Burası gtkD konusu. QtD yorumlarını diğer konuda alalım lütfen!  :-p

Şaka bir yana, henüz QtD'yi derleyip kullanmayı başaramadık. gtkD ise derleniyor ve çalışıyor.

iout anahtar sözcüğünün anlamı değişti. Eski kodlarda kullanılan inout'ların yerine ref yazılması gerekiyor.

Yapman gereken, gtkD için dmd 2.037'yi kullanmak... :)

Ali
Mengu (Moderator) #13
User title: NONSERVIAM
Member since Jul 2009 · 254 posts · Location: Dersaadet
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
Quote by acehreli:
Hey! Burası gtkD konusu. QtD yorumlarını diğer konuda alalım lütfen!  :-p

Şaka bir yana, henüz QtD'yi derleyip kullanmayı başaramadık. gtkD ise derleniyor ve çalışıyor.

iout anahtar sözcüğünün anlamı değişti. Eski kodlarda kullanılan inout'ların yerine ref yazılması gerekiyor.

Yapman gereken, gtkD için dmd 2.037'yi kullanmak... :)

Ali

make derken dmd surumunu nasil belirtecegim ustad?

demistim ki dmd 2.037'yi indirdim. GNUmakefile dosyasini actim, 38. satira DC = /home/mengu/Desktop/dmd2/linux/bin/dmd ekledim. bayagi bir derledi. nefesimi tutmus bekliyorken kalakaldim.

hata soyle bir sey: http://paste.pocoo.org/show/191002/
http://www.mengu.net - ki$isel bili$im guncesi.
This post was edited on 2010-03-17, 20:30 by Mengu.
acehreli (Moderator) #14
User title: Ali Çehreli
Member since Jun 2009 · 2279 posts
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
Biraz sonra kendim de deneyeceğim ama belki de 2.037 derleyicisi ile başka bir sürümün libphobos'u karışıyordur.

Bu aslında benim suçum sayılır: Kurulum sayfasında da /usr/lib dizinine libphobos kopyalanmasını söylüyorum ama sanırım gerekmiyor.

Eğer sabrın kaldıysa, :)

a) Ya /usr/lib'e 2.037'nin libphobos'unu kopyala

b) ya da /usr/lib'deki libphobos'ları silerek dene

Veya boşver, ben şimdi deneyerek sonucu bildireceğim. :)

Ali
acehreli (Moderator) #15
User title: Ali Çehreli
Member since Jun 2009 · 2279 posts
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
Çalışıyor...

/usr/lib altında libphobos2.a bulunmasın.

gtkD'nin GNUmakefile dosyası, ortamda dmd isimli bir program bulunmasını istiyor. Bence GNUmakefile'ı eski haline getir ve dmd yazınca çalışması için şu konudaki adımları uygula:

  http://ddili.org/forum/post/1663

Olacak... :)

Ali
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please note the verification code from the picture into the text field next to it.
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Special characters:
Page:  1  2  next 
Not logged in. · Lost password · Register
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Current time: 2012-05-18, 09:43:49 (UTC -07:00)