Thread overview
Derleme Sorunu
Oct 24, 2011
Emre Kovancı
Oct 24, 2011
Emre Kovancı
Oct 24, 2011
zafer
October 24, 2011

Herkese merhaba,

Bende d dilini öğrenmeye karar verdim,ancak şu derleme olaylarında sorun yaşıyorum.Dmd yi indirdiğimde klasör içinde dm/dmd/dm2 şeklinde klasörler var.Dmd2 nin içindede örnek kodların olduğu dosyalar vs. var.Ben örneğin abc.d şeklinde örnek bir dosya oluşturuyorum.

Çalıştıra
dmd deneme.d -ofdeneme.exe şeklinde,yazıp exe haline dönüştürmek istediğimde konsolda "Error:cannot read file abc.d" şeklinde hata çıkıyor.

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

October 24, 2011

Hoşbulduk,

Dmd komutunu alan klasör dmd2 onun içindede abc.d var.

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

October 24, 2011

Hoşgeldin aldarson! :)

Windows kullanan arkadaşlar daha iyi yardımcı olacaklardır ama dmd komutunu verdiğin klasörde abc.d dosyası olduğundan emin misin? (Gösterdiğin komutta 'deneme.d' geçtiği için belki de dosyanın ismi deneme.d'dir ama sen dmd'ye abc.d diyorsundur?)

(Aynı hata mesajını öyle bir dosya olmadığında Linux altında da görüyorum. Zaten dmd'nin hata mesajları Windows veya Linux'ta aynıdır.)

Ne olursa olsun çok basit bir sorun; giderilir. :)

Ali

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

October 25, 2011

Selamlar aldarson,

Ali'nin Windows ile pek arası yok :) Sana ben yardımcı olmaya çalışayım.

Öncelikle D ortamını bilgisayarına başarıyla kurduğunu varsayıyorum. Ancak yinede emin olmak için konsolda (cmd) şu komutu (dmd) verip çıktısını kontrol etmeni istiyorum. Ekran çıktısı aşağıdaki gibi olmalı ;

Alıntı:

>

C:\Users\Zafer>dmd
DMD32 D Compiler v2.055
Copyright (c) 1999-2011 by Digital Mars written by Walter Bright
Documentation: http://www.digitalmars.com/d/2.0/index.html
Usage:
dmd files.d ... { -switch }

files.d D source files
@cmdfile read arguments from cmdfile
-c do not link
-cov do code coverage analysis
-D generate documentation
-Dddocdir write documentation file to docdir directory
-Dffilename write documentation file to filename
-d allow deprecated features
-debug compile in debug code
-debug=level compile in debug code <= level
-debug=ident compile in debug code identified by ident
-debuglib=name set symbolic debug library to name
-defaultlib=name set default library to name
-deps=filename write module dependencies to filename
-g add symbolic debug info
-gc add symbolic debug info, pretend to be C
-H generate 'header' file
-Hddirectory write 'header' file to directory
-Hffilename write 'header' file to filename
--help print help
-Ipath where to look for imports
-ignore ignore unsupported pragmas
-inline do function inlining
-Jpath where to look for string imports
-Llinkerflag pass linkerflag to link
-lib generate library rather than object files
-man open web browser on manual page
-map generate linker .map file
-noboundscheck turns off array bounds checking for all functions
-nofloat do not emit reference to floating point
-O optimize
-o- do not write object file
-odobjdir write object & library files to directory objdir
-offilename name output file to filename
-op do not strip paths from source file
-profile profile runtime performance of generated code
-property enforce property syntax
-quiet suppress unnecessary messages
-release compile release version
-run srcfile args... run resulting program, passing args
-unittest compile in unit tests
-v verbose
-version=level compile in version code >= level
-version=ident compile in version code identified by ident
-vtls list all variables going into thread local storage
-w enable warnings
-wi enable informational warnings
-X generate JSON file
-Xffilename write JSON file to filename

C:\Users\Zafer>

Eğer böyle bir çıktı alabiliyorsan dmd v2.055 derleyicini doğru kurmuş ve yapılandırmışsın demektir. Bu adımdan sonra en basit hali ile bir dosya derlemek istersen şu komutu kullanabilirsin.

Alıntı:

>

C:\D-proje>dmd test.d

Bu komut ilgili dosyanın bulunduğu klasörde test.obj ve test.exe isimli iki dosya daha oluşturacaktır. Bu dmd'nin en basit kullanım şeklidir. Daha güzel bir kullanım şekli şu şekilde olabilir.

Alıntı:

>

C:\D-proje>dmd -w test.d

Bu kullanımda eklenen "-w" parametresi sayesinde programı derlerken oluşan uyarı mesajlarını ekranda görebiliriz. Küçük bir örnek vermek gerekirse, kodumuz şöyle olsun;

import std.stdio;

void main()
{
   foo(1);
}

int foo(int i)
{
   return i;
   return i + 1;
}

Bu kodu test.d isimli bir dosya olarak sakladığımızı düşünelim. Şimdi bu kodu yukarıdaki örneklere göre derleyelim.

Alıntı:

>

C:\D-proje>dmd test.d

C:\D-proje>

Görüldüğü gibi -w parametresini kullanmadan derlediğimizde hiçbir hata almadan derlendiğini görüyoruz şimdi ise -w parametresi ile derlemeye çalışalım.

Alıntı:

>

C:\D-proje>dmd -w test.d
test.d(11): Warning: statement is not reachable

C:\D-proje>

Görüldüğü üzere gizlenen bir uyarı mesajını yakaladık. Bu tür uyarı mesajlarını yakalamak için -w parametresini sürekli açık tutmanı tavsiye ederim. Neyse konu çok dağıldı, biz konumuza geri dönelim.

Yukarıdaki örneklerde dikkatini çekti ise derleme sonucu oluşan exe dosyamız otomatikman d dosyası ile aynı isimde oldu. Eğer exe programımıza başka bir isim vermek isteseydik şöyle derlememiz gerekirdi.

Alıntı:

>

C:\D-proje>dmd -of"ilkProjem" test.d

C:\D-proje>

Burada gördüğün gibi -of parametresini kullanarak exe dosyamıza istediğimiz bir ismi verebiliyoruz. Burada benim sık yaptığım hata -of parametresinin önündeki "-" işaretini unutmak ve -of parametresinden sonra ismi yazarken bir boşluk bırakmak bunları yapmamaya dikkat etmelisin -of parametesinden sonra boşluk yok. Yazım daha güzel görünsün diye exe ismini belirlerken çift tırnak kullanabilirsin.

Alıntı:

>

Çalıştıra
dmd deneme.d -ofdeneme.exe şeklinde,yazıp exe haline dönüştürmek istediğimde konsolda "Error:cannot read file abc.d" şeklinde hata çıkıyor.

Senin burada yazdığın mesajda ilginç bir durum var. "dmd deneme.d -ofdeneme.exe" dmd'ye deneme.d isimli bir dosyayı derlemesini söylüyorsun ama dmd sana "Error:cannot read file abc.d" abc.d isimli bir dosyayı okuyamadığını söylüyor tekrar kontrol edebilir misin? Bu arada küçük bir not, çalıştıra bunu yazarsan olmaz çalıştıra cmd yazıp enter tuşuna bastıktan sonra karşına çıkan siyah konsol (terminal) penceresine bunları yazmalısın ;-)

Umarım bu bilgiler sorunu çözmene yardımcı olur. Takıldığın noktalarda biz buradayız ve gerçekten güçlü bir destek ekibimiz var :) Hem linux hemde Windows platformunda, D öğrenme konusunda kararlı isen bence doğru yerdesin ;-)

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