Forum: D Programlama Dili RSS
D dili derleyicisi klasör İçerikleri
cos00kun #1
Üye Kas 2014 tarihinden beri · 108 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: D dili derleyicisi klasör İçerikleri
Linux yada Windows farketmez ama D diliyle birlikte IDE ler, birçok hazır kütüphaneler. paketler v.s. kullanılıyor.. Gerek bahsettiğim araçlar gerekse gerekliliğine inandığım için DMD2 derleyicisinin kurulduğu klasör içeriklerinin hangilerinin ne işe yaradığını Türkçe olarak açıklayabilir misiniz ? (Örneğin linker nerde tanımlı hangi dosya çalıştırır gibi) Özellikle IDE kurulumlarından sonra compiler ve linker ayarları için bunların gerekliliği çok önemli oluyor. Diyelimki GtkD kütüphanesini kurduk burda IDE mizde ayar yapmadığımız taktirde program genellikle çalışmayacaktır bu ayarı yapabilmemiz içinde derleyicinin kurulduğu dosya ve dizinlerin ne işe yaradıklarını bilmemiz gerekiyor diye düşünüyorum ..
Huzur dolu bir hafta sonu diliyorum..
E=mc^2
erdem (Moderatör) #2
Üye Tem 2009 tarihinden beri · 981 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Kütüphane kullanımı için örnek

https://github.com/ikod/dlang-requests

kütüphanesi olsun. Bunu git clone ile herhangi bir dizine çoğaltıyoruz. dub ile derliyoruz.

Sonra Linux için ben kütüphaneleri koyacağım bir dizin belirliyorum. Örneğin kütüphane dizini /home/erdem/Belgeler/kutuphane/ddili/ olsun. Bu dizinde lib ve import isimli iki tane dizin oluşturuyorum. Daha sonra derleme sonucu oluşan librequests.a dosyasını lib dizinine kaynak dizinin tamamını ise import dizinine kopyalıyorum.

-I/home/erdem/Belgeler/kutuphane/ddili/import  -L-L/home/erdem/Belgeler/kutuphane/ddili/lib

Programı derlerken -I ile kaynak dosyaların nerede olduğunu belirtiyorum -L-L ise kütüphane dosyalarının nerede olduğunu belirtiyor. Kütüphanin kendisini ise

-L-l:librequests.a

şeklinde programa ekleyebiliyoruz.
acehreli (Moderatör) #3
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 #1
cos00kun on 2017-11-11, 01:52:
Linux yada Windows farketmez

Pratikte öyle olmasını bekliyoruz ama aşağıda bağlayıcı ile ilgili söylediğim gibi, işletim sistemi farklılıklar getirebiliyor.

DMD2 derleyicisinin kurulduğu klasör içeriklerinin hangilerinin ne işe yaradığını Türkçe olarak açıklayabilir misiniz ?

tree -d ~/dmd2.074.0 komutunun çıktısını değiştirerek bakıyorum. (Sistemimde aslında daha yeni bir dmd sürümü kurulu. Aşağıdaki, .zip dosyası olarak kurduğum eski bir sürüm.)


# Desteklenen işletim sistemleri için oluşturulmuş programlar (dmd vs.):

├── freebsd
│   ├── bin32
│   └── bin64
├── linux
│   ├── bin32
│   ├── bin64
│   ├── lib32
│   └── lib64
├── osx
│   └── bin
├── solaris
│   ├── bin32
│   └── bin64
└── windows
    └── bin

# Yerel olarak okunabilen belgeler (hem derleyici hem Phobos)

├── html
│   └── d
│       ├── changelog
│       ├── css
│       ├── images
│       │   ├── ddox
│       │   └── orgs-using-d
│       ├── js
│       ├── phobos
│       ├── spec
│       └── zlib

# Unix ortamlarında kullanılan 'man' belgeleme programına ek dosyalar.
# Böylece, örneğin Linux'ta 'man dmd' diyebiliyoruz.

├── man
│   ├── man1
│   └── man5

# Örnek programlar (varlıklarından haberim yoktu :) )

├── samples
│   └── d
│       └── mydll

# Derleme sırasında gereken kaynak dosyalar
# Bunların derleyicinin bütün kaynakları olduklarını sanmıyorum.
# Bunlar, şablon, object.d vs. gibi bizim programlarımız için
# de gereken dosyalar. (Galiba.)
#
# Bunlar arasından bu güne kadar arada bir object.d dosyasına baktığım oluyor.
# Bu dosya çalışma zamanında bilgi veren TypeInfo_Class gibi ilginç sınıfları
# tanımlıyor:
#
#   ~/dmd2.074.0/src/druntime/import/object.d

├── src
│   ├── dmd
│   │   ├── ddmd
│   │   │   ├── backend
│   │   │   ├── root
│   │   │   └── tk
│   │   └── vcbuild
│   ├── druntime
│   │   ├── benchmark
[...]
│   │   ├── changelog
│   │   ├── def
│   │   ├── import
[...]
│   │   ├── src
[...]

# Herhalde çöp toplayıcı (GC: garbage collector) ile ilgili

│   │   │   ├── gc
│   │   │   │   └── impl
│   │   │   │       ├── conservative
│   │   │   │       └── manual

# Standard kütüphane
# Çoğunlukla şablon olduklarından bu dosyalar kendi programlarımızda
# doğrudan kullanılıyor. O yüzden hemen hemen bütün kaynak kodları burada.
# Çoğu modül std klasörünün altında ama std.algorithm ve std.phobos gibi
# modüller artık 'package' olduklarından onların kendi klasörleri var:

│   └── phobos
[...]
│       └── std
│           ├── algorithm
[...]
│           ├── range


(Örneğin linker nerde tanımlı hangi dosya çalıştırır

Bağlayıcı (ve yakın arkadaşı 'loader' (yükleyici?)) işletim sistemine bağlı bir kavram ve programdır. İşletim sistemiyle geliyor. Bir fark, sanırım Linux'ta kurulu olduğu halde bağlayıcı gibi 'developer' (program geliştirici) araçlarını ayrıca kurmak gerekiyor. Ama Windows ortamında D programı oluşturabiliyorsanız bağlayıcınız da kurulu demektir.

Linux ortamında bağlayıcı olara geleneksel olarak ld ama ondan daha yeni gold var.

ayar yapmadığımız taktirde program genellikle çalışmayacaktır

Bu konuda C ve C++ programlarındaki gibi: Erdem'in dediği gibi, import edilen modüllerin nerede olduklarını ve kütüphane dosyalarının nerede ve neler olduklarını bildirmek gerekiyor.

Ali
cos00kun #4
Üye Kas 2014 tarihinden beri · 108 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Her ikinizede çok teşekkürler çok faydalı oldu bu bilgiler.. Bu arada Ali hocam siteye bir teşekkür butonu eklemeniz lazım cevaben bir teşekkür yazmayınca kendimi rahatsız hissediyorum :)
E=mc^2
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:
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-21, 11:00:46 (UTC -08:00)