Thread overview
DIni derleme hatası ve birkaç soru
Aug 25, 2013
m.erin
Aug 26, 2013
m.erin
Aug 26, 2013
m.erin
August 26, 2013

Merhaba arkadaşlar.
Birkaç haftadır C++ ile güreşirken daha önce gene bu site üzerinden bilgi sahibi olduğum D diliyle bugün biraz vakit geçirdim. Ali Bey' in kitabını biraz okuma fırsatım oldu. Açıkçası Python rahatlığında, kavraması kolay bir dil. Forumda da adı geçen birkaç kütüphaneyi denemek için derlemeye çalıştım fakat başarılı olamadım. Kendi yazdığım kodları rahat bir şekilde derliyorum. dmd ve gdc derleyicilerinde de aynı hatayı alıyorum. Derlemeye çalıştığım kütüphane: DIni. Örnek kodları derlemeye çalıştığımda aldığım hata:

mews@mews-acer:~/Projects/D/DIni/examples$ dmd basic.d
basic.o:(.data+0x18): undefined reference to `_D4dini12__ModuleInfoZ'
basic.o: In function `_Dmain':
basic.d:(.text._Dmain+0x1b): undefined reference to `_D4dini10IniSection5ParseFAyaZS4dini10IniSection'
basic.d:(.text._Dmain+0x48): undefined reference to `_D4dini10IniSection10getSectionMFNcAyaZS4dini10IniSection'
basic.d:(.text._Dmain+0x58): undefined reference to `_D4dini10IniSection6getKeyMFAyaZAya'
collect2: error: ld returned 1 exit status
--- errorlevel 1

gdc ile derlemeye çalıştığımda:

mews@mews-acer:~/Projects/D/DIni/examples$ gdc basic.d -o basic
/tmp/ccW48hkw.o: In function `_Dmain':
basic.d:(.text+0x31): undefined reference to `_D4dini10IniSection5ParseFAyaZS4dini10IniSection'
basic.d:(.text+0xa4): undefined reference to `_D4dini10IniSection10getSectionMFNcAyaZS4dini10IniSection'
basic.d:(.text+0xb7): undefined reference to `_D4dini10IniSection6getKeyMFAyaZAya'
/tmp/ccW48hkw.o:(.data+0x18): undefined reference to `_D4dini12__ModuleInfoZ'
collect2: ld returned 1 exit status

Kütüphanede bir problem var diyerek ConsoleD isimli kütüphaneyi de projeme dahil edip derlemeye kalktığımda aşağıdaki hatayı alıyorum:

mews@mews-acer:~/Projects/D/ConsoleD$ dmd main.d
main.o:(.data+0x18): undefined reference to `_D8consoled12__ModuleInfoZ'
collect2: error: ld returned 1 exit status
--- errorlevel 1

dmd versiyon: dmd_2.063.2-0_amd64

Uzun süre PyQt ile uygulama geliştirdiğim için gtk hakkında fazla bilgim yok. Bu sebeple Qt ile çalışmak istiyorum. Qtd için depoda herhangi bir paket bulamadım. Kullandığım dağıtım Ubuntu 13.04. Kaynak koddan derleme işlemi de yapamadım. Acaba Qt creator ile D kodlamak için bir eklenti var mı?

Cevaplarınız için şimdiden teşekkürler.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 26, 2013

Hoşbuldum :)
Teşekkür ederim bu şekilde oldu.
Kütüphaneyle beraber derlendi. Peki sizin bahsettiğiniz şekilde dini.d dosyasını kütüphane şeklinde derleyip projeye nasıl dahil edebilirim? Yani bir .so dosyası şeklinde derlemekten bahsediyorum. Ve derlenen 3rd kütüphaneleri bir klasörden projeye dahil etme imkanım var mı?
Tekrar teşekkürler :)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 26, 2013

Yardımlarınız için teşekkür ederim :)
Evet -share seçeneğiyle derleyince .dylib uzantılı şekilde derledi. Sistem Mac Os, Linux üzerinde daha deneme şansım olmadı.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 26, 2013

Hoşgeldin m.erin! :)

DIni bağımsız bir kütüphane, değil mi? Eğer derlenmiş bir kütüphane dosyası yoksa ve senin kütüphane haline getirme gibi bir niyetin yoksa, DIni'nin modüllerini de derleme satırına yazman gerekiyor:
'$ dmd basic.d dini.d -I/dini/hangi/klasordeyse'

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 26, 2013

Şurada statik bağlanan kütüphanelerle ilgili bilgi var:

http://ddili.org/ders/d/moduller.html

Onu yazdığım zaman dmd dinamik kütüphanelery desteklemiyordu. Gördüğüm kadarıyla artık -shared diye bir derleyici seçeneği var. Deneyip bildirirsen seviniriz. :) Linux altında ayrıca -fPIC seçeneği gerekir.

Bağlayıcıyla ilgili bütün seçenekler de -L'den sonra verilir:

'dmd ... -L-L/kutuphane/dosyalarinin/aranacagi/klasor -L-lkutuphane'

Evet, -L iki kere yazılıyor: Birincisi dmd'nin seçeneği, ikincisi bağlayıcının seçeneği...

Tabii C++'ta olduğu gibi, modülde şablon varsa kütüphane oluşturmak işe yaramayabilir çünkü şablonun her farklı parametre kullanımı için tekrar derlenmesi gerekir. O yüzden en iyisi dini.d'yi de komut satırına yazmaktır. Hem o derleyici eniyileştirmelerine de yardımcı olur.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]