Thread overview
D dili derleyicisi klasör İçerikleri
Nov 10, 2017
cos00kun
Nov 11, 2017
erdem
Nov 13, 2017
cos00kun
November 11, 2017

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..

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

November 11, 2017

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ı (https://github.com/ikod/dlang-requests/tree/master/source) 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.

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

November 13, 2017

Alıntı (cos00kun:1510393952):

>

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.

Alıntı:

>

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
'

Alıntı:

>

(Ö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.

Alıntı:

>

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

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

November 13, 2017

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 :)

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