Forum: D Programlama Dili RSS
Linux İçin QtD Nasıl Yüklenir?
Sayfa:  önceki  1  2 
zafer #16
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 11346
nurullahisrgan:
Anlamadığım olay şu; madem derlemede sorun çıkmıyor. Çalıştırdığımda niye sorun çıkıyor. Çalıştırdığımda hata şu:

./merhaba: error while loading shared libraries: libgtkd-3.so.0: cannot open shared object file: No such file or directory

Şu adresteki (http://www.kodumundunyasi.net/c-c/c-static-dynamic…?lang=ar) bilgiler sanırım neden çalıştırma esnasında sorun çıktığı konusunda sana bir fikir verecektir.

Uzun süredir gtkD ile ilgilenmiyorum bu sebeble bende çok hakim değilim. Umarım çözüm bulursun, bulamazsan bayram sonrası görüşmek üzere, kolay gelsin.
https://github.com/zafer06 - depo
acehreli (Moderatör) #17
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ı
Yanıtlanan mesaj ID 11346
Programı oluştururken -L-lgtkd-3 dediğinde "bu program libgtkd-3.so ile birlikte yüklenmelidir" diyorsun. Programın adının 'deneme' olduğunu varsayarsak, hangi kütüphaneleri kullandığını ldd ile ögrenebilirsin:


$ ldd deneme
    linux-vdso.so.1 =>  (0x00007ffed7915000)
    libc.so.6 => /lib64/libc.so.6 (0x0000003587400000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003587c00000)
    libm.so.6 => /lib64/libm.so.6 (0x0000003587800000)
    librt.so.1 => /lib64/librt.so.1 (0x0000003588400000)
    /lib64/ld-linux-x86-64.so.2 (0x0000003587000000)


nurullahisrgan:
bağlayıcılar şu dizinde: /usr/local/lib

(Tabii, bağlayıcılar değil de kütüphaneler...)

Peki, o dizinde adında gtkd olan bir dosya var mı? Örneğin, libgtkd-3.so?

Eğer varsa, sanırım asıl sorun sistem bağlayıcısın gtkd'yi öğrenmemiş olmasından kaynaklanıyor. Tahminim doğruysa şu komut yeterli olacaktır:

sudo ldconfig

Sanırım Debian sistemlerinde /etc/ld.so.conf dosyasına da ek olarak bir satır eklemek gerekiyor.

Ali
acehreli (Moderatör) #18
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ı
İkinci sayfaya geçtiğimizi farketmediğim için Zafer'in mesajını ancak kendiminkini yazınca gördüm. Evet, LD_LIBRARY_PATH de çalışır ama onu güvenlik gibi gerekçeler kullanmak istemeyiz. 'LD_LIBRARY_PATH is Bad' diye aratınca nedenleri görülüyor ve şöyle sayfalar bulunuyor:

  http://stackoverflow.com/questions/25918462/why-ld-library…

Oradan da, bağlayıcının rpath seçeneğini hatırlıyoruz ve belki de programı oluştururken ondan da yararlanıyoruz: :)
dmd ... -L-rpath=/kutuphanenin/bulundugu/yer
rpath, kütüphane klasörünü çalışma zamanında bakılacak olan klasörlere ekliyor.

Ali
nurullahisrgan #19
Üye Ock 2015 tarihinden beri · 76 mesaj · Konum: Mardin, Nusaybin
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Bayamınız kutlu olsun. Kurulumsonrası.zip te paylaştığım klasörlerde libgtk-3.so ve benzerleri bulunmakta. Bir de rpath seçeneğini deneyeceğim. Olmazsa tekrar yazarım.
nurullahisrgan #20
Üye Ock 2015 tarihinden beri · 76 mesaj · Konum: Mardin, Nusaybin
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Buradan yükleme yapacağım: http://sourceforge.net/p/d-apt/activi…?page=1&limit=…
Fazlasıyla D projesi deb paketlerine dönüştürülmüş.
nurullahisrgan #21
Üye Ock 2015 tarihinden beri · 76 mesaj · Konum: Mardin, Nusaybin
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 11349
Sorun çözüldü... Derleme işlemini aşağıdaki şekilde yaptığım zaman program sorunsuz bir şekilde çalıştı.


dmd Merhaba.d -I/usr/local/include/d/gtkd-3/ -ofMerhaba -L-lgtkd-3 -L-ldl -m32 -defaultlib=:libphobos2.so -L-rpath=/usr/local/lib


Şimdi bir sorum olacak ve konuyu bitireceğim. Acaba aşğıdaki satır ne işe yarıyor:


-m32 -defaultlib=:libphobos2.so


Bu şekilde, taşınabilirlik sizce azalabilir mi. Neticede derleyicini m32 ve m64 diye iki komutu var.
acehreli (Moderatör) #22
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ı
Oh, sevindim! :)

-m32 64 bitlik ortamlarda da çalışır. -defaultlib'i hiç kullanmadım ama libphobos2.so'nun zaten varsayılan olduğunu düşünürüm. Bence ona ya gerek yok ya da başka ortamlarda o da sorun çıkartmaz.

Ali
nurullahisrgan #23
Üye Ock 2015 tarihinden beri · 76 mesaj · Konum: Mardin, Nusaybin
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
acehreli:
Oh, sevindim! :)

-m32 64 bitlik ortamlarda da çalışır. -defaultlib'i hiç kullanmadım ama libphobos2.so'nun zaten varsayılan olduğunu düşünürüm. Bence ona ya gerek yok ya da başka ortamlarda o da sorun çıkartmaz.

Ali

-m32 olmadan da kod sorunsuz bir şekilde derleniyormuş. Ama defaultlib olmadan çalışma hatası veriyor.
zafer #24
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Tebrikler :) Her çaba sonuçta mutlaka mükafatını bulur.

Bende bazen derlemelerime curl kütüphanesini eklediğim zaman phobos2 kütüphanesinide eklemek zorunda kalıyorum. Normal derleme işlemlerinde ise buna gerek kalmıyor. Detaylı bir araştırma yapmadım ama şöyle bir fikrim var. Sanırım derleme satırına farklı kütüphaneler eklenince dmd mevcut config dosyasındaki varsayılan kütüphaneleri devre dışı bırakıyor. Bu sebeple kendi temel kütüphanesi phobos2'de tekrar eklenmek zorunda kalıyor. Yapanlara sormak gerek tabi :)

Ben phobos2'yi -defaultlib değilde normal kütüphane anahtarı (-L) ile ekliyordum. Ayrıca ben lphobos2 şeklinde ekliyorum. Senden ricam birde bu şekilde denermisin, çalışacak mı merak ediyorum. Yani şöyle:

dmd Merhaba.d -I/usr/local/include/d/gtkd-3/ -ofMerhaba -L-lgtkd-3 -L-ldl -L-lphobos2.so
https://github.com/zafer06 - depo
nurullahisrgan #25
Üye Ock 2015 tarihinden beri · 76 mesaj · Konum: Mardin, Nusaybin
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
    Yardımlarınız için çok teşekkür ediyorum. Zafer Hocam, dediğiniz gibi derleme işlemi yaptım ancak sanırım libphobos2.so dosyası bulunmuyor. Derleyici de zaten aşağıdaki şekilde hata veriyor:

/usr/bin/ld: cannot find -lphobos2.so
collect2: error: ld returned 1 exit status
--- errorlevel 1

    Aşağıdaki derleme işlemi sorunsuz bir şekilde çalışıyor:

dmd Merhaba.d -I/usr/local/include/d/gtkd-3/ -ofMerhaba -L-lgtkd-3 -L-ldl -L-Llibphobos2.so

    Hem bu derleme işlemi daha kolay olmaktadır.
    Bu arada dmd.conf dosyasını aşağıdaki şekilde değiştridim:

[Environment32]
DFLAGS=-I/usr/include/dmd/phobos -I/usr/include/dmd/druntime/import -I/usr/local/include/d/gtkd-3 -L-L/usr/lib/i386-linux-gnu -L-lgtkd-3 -L-lgtkdgl-3 -L-lgtkdsv-3 -L-ldl

[Environment64]
DFLAGS=-I/usr/include/dmd/phobos -I/usr/include/dmd/druntime/import -I/usr/local/include/d/gtkd-3 -L-L/usr/lib/x86_64-linux-gnu -L-lgtkd-3 -L-lgtkdgl-3 -L-lgtkdsv-3 -L-ldl

    Böylelikle, sadece aşağıdaki işlem yeterli oluyor:

dmd Merhaba.d -ofMerhaba

    Şimdilik gtkd-3, gtkdgl-3 ve gtkdsv-3 yeterlidir. Diğerlerini de daha sonra kurarım. Bu işin mantığını anladım.
    Bu arada foruma GtkD3 kurulum aşamalarını ve derleme işlemlerini yazmak gerekiyor. Benim gibi GtkD öğrenmek isteyenler, o kadar zor durumda kalmasın.. Bu iletiyi okurken zaten yazmışım bile: http://ddili.org/forum/post/11394
    Gtk'yi gördükten sonra, Qt'den soğudum. Ben Gtk'yi gözümde karalamışım. GtkD'yi öğrenmek doc belgesini ve örnek kodları incelyeceğim. Sanırım D diline önem verilmediği için GtkD'yi güzelce anlatan bir site yok. Eğer varsa bildirirseniz sevinirim.
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:  önceki  1  2 
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, 04:30:20 (UTC -08:00)