Peki hocam, Phobos kütüphanesini biz derleyebilir miyiz? Yani içinde değişiklikler yapıp .a uzantılı dosyayı oluştursak, yoksa çekirdeğin kodları olmadığı için bunu beceremez miyiz?
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]
June 06, 2012 GNU Linux'da D Programlama Dili | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli (acehreli) | Peki hocam, Phobos kütüphanesini biz derleyebilir miyiz? Yani içinde değişiklikler yapıp .a uzantılı dosyayı oluştursak, yoksa çekirdeğin kodları olmadığı için bunu beceremez miyiz? -- |
June 06, 2012 GNU Linux'da D Programlama Dili | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli (acehreli) | Alıntı (acehreli): >Onları yalnızca derleme aşamasında kullanıyor. (İsimler doğru mu, kullanımları geçerli mi, vs. diye.) Kaynak kod dosyayalarının tam olarak hangi işlemler için kullanıldığı ile ilgili tam bir liste var mı? Neticede bir programı oluşturmak için hem kaynak koda hemde derlenmiş kütüphane dosyasını ihtiyaç var. Tabi kütüphane dosyasını kaynak koddan oluşturmak mümkün sanırım. Peki kaynak kodu kapalı olan kütüphanelerde bu durum nasıl oluyor? -- |
June 07, 2012 GNU Linux'da D Programlama Dili | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli (acehreli) | Alıntı (acehreli): >O zaman derleme adımı başarılı oluyor ama bağlayıcı foo'nun tanımını bulamıyor. Onun için foo.d'yi de eklemek gerek: Teşekkürler Ali, konuyu güzel anlatmışsın. Yukarıdaki gibi bir durumda birden çok dosya için sanırım .a uzatılı dosyalarda kullanılıyor. Bende gtkD ile çalışırken bağlama esnasında böyle bir dosya ekliyordum. -- |
June 06, 2012 GNU Linux'da D Programlama Dili | ||||
---|---|---|---|---|
| ||||
Posted in reply to Salih Dinçer | Ben hiç denemedim ama Phobos'u kendimiz derleyebiliriz. Kaynak kod şurada: https://github.com/D-Programming-Language/phobos Galiba Linux için posix.mak make dosyası kullanılıyormuş. Ali -- |
June 07, 2012 GNU Linux'da D Programlama Dili | ||||
---|---|---|---|---|
| ||||
Posted in reply to zafer | Bir modülde şu işlev olsun:
Diğer modülde de şu:
İkinci modül birinci modülü görmediği zaman foo'nun ne olduğunu bilemez. Kaynak dosya öncelikle onun için kullanılıyor. Ayrıca, ikinci modül foo'nun int ve double türünde parametreler aldığını öğreniyor ve çağrının bu açıdan da yasal olduğunu görmek yanında ayrıca program yığıtına 42 ve 1.5 değerlerini yerleştiriyor ve ondan sonra "bu noktada foo'yu çağırıyorum" bilgisini derliyor. O bilginin hemen altına da program yığıtından dönüş değerini toplayan kodu yerleştiriyor. Sonra aynı işlemleri writeln için tekrarlıyor: foo'nun döndürdüğü değeri program yığıtına yerleştiriyor ve "writeln'i çağırıyorum" bilgisini derliyor. bar'ın derlenmesi sırasında foo modülü bunun dışında kullanılmıyor. Yukarıdaki "çağırıyorum" denen yerleri işlevlerin derlenmiş olan kodlarıyla birleştirmek bağlayıcının görevidir. Derlenmiş olan program parçaları arasında foo isimli işlev arıyor. Bulursa "bu noktada foo'yu çağırıyorum" olan yeri "foo şu adreste" diye değiştiriyor (aslında bunun tam ayrıntısını bilmiyorum). Dolayısıyla programı şöyle oluşturmak yeterli olmuyor: 'dmd bar.d' O zaman derleme adımı başarılı oluyor ama bağlayıcı foo'nun tanımını bulamıyor. Onun için foo.d'yi de eklemek gerek: 'dmd bar.d foo.d' D'de kaynak kodu kapalı kütüphane olmuyor. Olacaksa da işlevlerin yalnızca bildirimlerini içeren .di dosyaları yazılabiliyor. Bunlar C ve C++'taki başlık dosyaları gibi kullanılıyorlar: işlevlerin tanımları yok, yalnızca bildirimleri var... Kaynak kodun olmamasının bir nedeni şablonların kaynak koda gereksinim duymaları. Örneğin kaynak kod olmasa kendi türlerimizi Phobos şablonlarıyla kullanamayız çünkü şablonların bizim türlerimize göre derlenebilmeleri için kaynaklarının derleyici tarafından görülmesi gerekir. Şablon kodları C++'ta da açık olmak zorundadır. Ali -- |
June 07, 2012 GNU Linux'da D Programlama Dili | ||||
---|---|---|---|---|
| ||||
Posted in reply to zafer | Alıntı (zafer): >birden çok dosya için sanırım .a uzatılı dosyalarda kullanılıyor. Bende gtkD ile çalışırken bağlama esnasında böyle bir dosya ekliyordum. Aslında Phobos için bile kütüphane eklemek gerekiyor ama dmd bunu Phobos'a ayrıcalıklı olarak perde arkasında kendisi yapıyor. Ali -- |
June 09, 2012 GNU Linux'da D Programlama Dili | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli (acehreli) | Kusura bakmayın; boş bir tartışma başlatmış olabilirim... Kendimce küçük bir özet geçmek istiyorum. Başlangıç için DMD kullanacaksanız şu paketlerin bulunması gerekiyor: 'sudo apt-get install 'gcc Ancak Gtk ve Geany (IDE) gibi platformlarda kod yazabilmek için aşağıdakilerde olmalı. Hatta bunlar, make ile derlenen çoğu paketin istediği (örn. gettext) şeyler. O yüzden bunlar da olursa hoş olacak...:) Alıntı: >'sudo apt-get install 'g++ Bu paketlerin çoğu küçük şeyler. Belki 20 MB'lık libgtk2.0-dev biraz vakit alabilir. Bunlara yaklaşık 4 MB'lık cmake'i de eklersek ve bunu tek komut halinde aşağıya nakledersem sanırım Linux'da çoğumuzun işi kolaylaşmış olur: Alıntı: >'sudo apt-get install 'gcc libc6 g++ gettext intltool libgtk2.0-dev cmake Aslında mesa* ve libjson* ile başlayan paketler de çok işimize yarayabilir. Ancak bunlar şimdilik şart değil gibi duruyor. Yakında wayland'ı derleme konusunda da bir çalışma tertiplemek istiyorum. Bakalım vakit bulabilecek miyim...:( -- |
June 09, 2012 GNU Linux'da D Programlama Dili | ||||
---|---|---|---|---|
| ||||
Posted in reply to Salih Dinçer | Çok teşekkürler Salih, bunlar çok yararlı bilgiler. Ali -- |
June 18, 2012 GNU Linux'da D Programlama Dili | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli (acehreli) | Salih, eline sağlık güzel olmuş. Her zaman söylediğim gibi forumları seviyorum ama malesef bir çok konu arasında çok değerli bilgiler kaybolup gidebiliyor. Bu sebeble bu tür özelleşmiş konuların bir makale formatında daha düzenli ve tertipli ve isteyenin kolaylıkla ulaşabileceği bir şekilde tasarlanması bana daha iyi olur gibi geliyor. -- |
June 18, 2012 GNU Linux'da D Programlama Dili | ||||
---|---|---|---|---|
| ||||
Posted in reply to zafer | Makaleleştirme fikrine katılıyorum. Ancak herhangi bir şey yazmak için özel vakit ayıramıyorum. Ama forumlar benim için başka oluyor ve kimi zaman bir makale benzeri (JSON'da olduğu gibi) şeyler ortaya çıkıyor. Belki de bir gün bu yazdıklarımızı derlemeliyiz. Ama önce, forumda başladığım JSON makalesini bitirmeliyim...:) Aslında yukarıdaki sadece bir araştırma notu. Özeti ise verdiğim son komut. Üstelik sadece Ubuntu ve benzer Linux dağıtımlarını kullananlara hitap ediyor. Henüz her geliştiriciye hitap edecek genel bir şey hazırlamadım. Örneğin GtkD'yi Windows'da nasıl kurarız diye bir makaleye de ihtiyaç var... -- |