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