Forum: D Programlama Dili RSS
gtkD'nin kurulması (ikinci deneme)
Sayfa:  1  2  sonraki 
acehreli (Moderatör) #1
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: 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 (Moderatör) #2
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
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 (Moderatör) #3
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Ş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 (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Ş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
Bu mesaj acehreli tarafından değiştirildi; zaman: 2010-03-09, 10:32.
canalpay (Moderatör) #5
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
  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 (Moderatör) #6
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Çalıştı! :)


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

Ali
canalpay (Moderatör) #7
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
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 :-)
Bu mesaj canalpay tarafından değiştirildi; zaman: 2010-03-09, 12:10.
acehreli (Moderatör) #8
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
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 (Moderatör) #9
Kullanıcı başlığı: NONSERVIAM
Üye Tem 2009 tarihinden beri · 347 mesaj · Konum: Dersaadet
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
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 - some kind of monster
acehreli (Moderatör) #10
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
QtD'nin kurulmasını ayrı bir konu olarak açtım. Neredeyse olacak! :) Benim 8G seçtiğim sanal makine diski yetmedi.

Ali
Mengu (Moderatör) #11
Kullanıcı başlığı: NONSERVIAM
Üye Tem 2009 tarihinden beri · 347 mesaj · Konum: Dersaadet
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
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 - some kind of monster
acehreli (Moderatör) #12
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
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 (Moderatör) #13
Kullanıcı başlığı: NONSERVIAM
Üye Tem 2009 tarihinden beri · 347 mesaj · Konum: Dersaadet
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
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 - some kind of monster
Bu mesaj Mengu tarafından değiştirildi; zaman: 2010-03-17, 21:30.
acehreli (Moderatör) #14
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
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 (Moderatör) #15
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Ç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
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Sayfa:  1  2  sonraki 
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-19, 00:36:25 (UTC -08:00)