Thread overview
Windows make dosyaları
May 18, 2011
erdem
May 19, 2011
erdem
May 19, 2011
erdem
May 19, 2011
erdem
May 19, 2011
erdem
May 20, 2011
erdem
May 20, 2011
erdem
May 18, 2011

Windows için make dosyası nasıl oluşturulur bilen var mı acaba.

http://www.digitalmars.com/ctg/make.html

Ben Digitalmars'ın make aracını inceledim ama nasıl kullanılacağını anlayamadım. Derlerken 'make -f win32.mak' şeklinde derleniyor sanırım ama içeriği nasıl olacak anlayamadım.

Bir de komut satırında linux altında

'$ dmd dosya.d baskadosya.d -I/modul/ekleme/dizini -L-L/kutuphane/dizini -L-lkutuphane'

şeklinde kullandığımız yazım biçiminin windows karşılığını bilen var mı acaba..

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

May 19, 2011

Windowsta basit make komutları çalışıyor diye biliyorum. Örn şu kodlar çalışıyor:


dkv: belge derle

PHONY: derle
derle:
       dmd denemeG.d dkvG.d bilgi.d dkvB.d
       ./denemeG
PHONY: belge
belge:
       dmd denemeG.d dkvG.d belge.ddoc bilgi.d dkvB.d -D -Ddhtml


PHONY: sil
sil:
       rm html -rf
       rm denemeG -rf
       rm denemeG.o -rf
       rm deneme -rf
       rm dkvözel -rf

bat dosyasıda hazırlanabilir. Örneğin örnek.bat dosyasının içine şu yazılır:
@ dmd dosya.d baskadosya.d -I/modul/ekleme/dizini -L-L/kutuphane/dizini -L-lkutuphane %*

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

May 19, 2011

Teşekkürler! :)

Bu arada windows'un komut istemine yazdığım komutların yarısı boşa gidiyor :-p Sonunda 'nano birsey.txt' en sonunda dank edince de notepad ile durumu kurtarmaya çalışıyorum.

Ayrıca Digital Mars koskoca derleyici yazıyor. Yazdıkları açıklama bir kaç satır. Ne bir örnek ne bir şey. Bir de GNU Make'i düşünün ne kadar döküman var. Her zaman Digital Mars'ta bulamadığım şeyleri bulduğum stackoverflow da bu sefer çare olmadı.

En sonunda D'nin kendi kaynak koduna baktım. Burada Phobos kütüphanesinde Andrei'nin yazdığı win32.mak örneği oldukça anlaşılırdı.

Alıntı:

>

CP=cp

Directory where dmd has been installed

DIR=\dmd2

Flags for dmc C compiler

CFLAGS=-mn -6 -r
#CFLAGS=-g -mn -6 -r

Flags for dmd D compiler

DFLAGS=-O -release -nofloat -w -d

DMD=$(DIR)\bin\dmd

DMD=dmd

.d.obj:
$(DMD) -c $(DFLAGS) $

test : test.exe

test.obj : test.d
$(DMD) -c test -g -unittest

test.exe : test.obj phobos.lib
$(DMD) test.obj -g -L/map

SRCS_1 = std\stdio.d std\stdiobase.d \

Ama bunu da bir araya getiremedim.

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

May 19, 2011

Olmadı.

Aslında derleyiciye geçilen '-I -L-L -L-l' seçenekleri windowsta farklı mı anlayamadım.

Oraya bakmıştım. Hatta derleyicinin 'lib' dosyalarının olduğu klasöre kopyaladım. Ama bu derleyiciye geçilen bağlayıcı parametreleri windowsta farklı mı emin olamadım. Örneğin:

'dmd -L-L/C:\lib'

gibi bir şey giriyorum. Derleyici C diye bir parametre almaz gibi bir hata veriyor.

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

May 19, 2011

Hala Natty üzerindeyim. Yarın biraz daha deneyeyim bakalım :)

Bir de 'sc.ini' dosyaları varmış. Onlara da bakarım artık.

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

May 19, 2011

Sonuçta oldu mu olmadı mı?

Şurayı görmüşsündür:

http://www.digitalmars.com/d/2.0/dmd-windows.html

dmd'nin bağlamayı nasıl yapacağı veya yapmayacağı "Linking" başlığında anlatılıyor.

Ali

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

May 19, 2011

Windows programlarında bölü işareti program parametresidir ya... Acaba bölü olmayacak mı?

Ali

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

May 20, 2011
import std.stdio;
import sdl;

void main()
{
   SDL_Init(SDL_INIT_EVERYTHING);
}

Şimdi şu basit SDL programını derlemeye çalışıyorum.

'dmd -c test.d sdl.d'

Buraya kadar her şey normal. Şimdi bağlamaya çalışıyorum.

'link test.obj sdl.obj VC\SDL.lib VC\SDLmain.lib'

Bu hatayı veriyor.

Alıntı:

>

OPTLINK (R) for Win32 Release 8.00.8
Copyright (C) Digital Mars 1989-2010 All rights reserved.
http://www.digitalmars.com/ctg/optlink.html
VC\SDL.lib Offset 00000H Record Type 0021
Error 138: Module or Dictionary corrupt

Hata mesajından gene problemin object ya da kütüphane dosyalarının formatından kaynaklandığını düşünüyorum.

http://www.digitalmars.com/ctg/coff2omf.html

'coff2omf' diye bir araç derleyici ile gelmiyor şimdi para verip gidip Digital Mars'ın C++ derleyicisini de mi satın almam gerekiyor. Microsoft derleyici araçlarını bedava dağıtırken sırf ben Digital Mars'a olan hayranlığımdan gidip onların C++ derleyici ve bağlayıcı araçlarını mı satın alayım :(

Ya da SDL'i kaynak kodundan Digital Mars C++ derleyicisiyle derlemek belki çözüm olabilir diye düşünüyorum.

Daha sonra gene daha önce konuştuğumuz objconv programını kullanarak lib dosyalarının formatını OMF formatına çevirmeyi düşünüyorum. Burada çevirmeye çalıştığım VC6 ile oluşturulmuş kütüphane dosyalarıydı.

'objconv.exe -fomf -nu SDLmain.lib SDLmain2.lib'

Alıntı:

>

Input library: SDLmain.lib, Format: COFF, Output: SDLmain2.lib, Format: OMF

6 Debug sections removed
1 Exception sections removed

Bunu başarılı bir şekilde tamamladı.

'objconv.exe -fomf -nu SDL.lib SDL2.lib'

Alıntı:

>

Error 2507: SDL.lib is an import library. Can not convert to static library

Anladığım kadarıyla burada işlevlerin tanımları var:

'objconv.exe -d SDL.lib'

http://paste.pocoo.org/show/392112/

'link test.obj sdl.obj VC\SDLmain2.lib'

Dediğimde de bu hatayı veriyor.

Alıntı:

>

OPTLINK (R) for Win32 Release 8.00.8
Copyright (C) Digital Mars 1989-2010 All rights reserved.
http://www.digitalmars.com/ctg/optlink.html
VC\SDLmain2.lib(SDL_win32_m)
Error 42: Symbol Undefined _SDL_main
VC\SDLmain2.lib(SDL_win32_m)
Error 42: Symbol Undefined _SDL_SetModuleHandle
VC\SDLmain2.lib(SDL_win32_m)
Error 42: Symbol Undefined _SDL_GetError
VC\SDLmain2.lib(SDL_win32_m)
Error 42: Symbol Undefined _SDL_Init
VC\SDLmain2.lib(SDL_win32_m)
Error 42: Symbol Undefined _SDL_strlcpy
VC\SDLmain2.lib(SDL_win32_m)
Error 42: Symbol Undefined _SDL_Quit
VC\SDLmain2.lib(SDL_win32_m)
Error 42: Symbol Undefined ___mb_cur_max

Hatta yeşillik olsun diye assembly koduna bile çevirdim.

'objconv.exe -fyasm SDL.dll SDL.asm'

Şöyle bir şeyler oluştu :)

; Filling space: 0AH
; Filler type: lea with same source and destination
;       db 8DH, 76H, 00H, 8DH, 0BCH, 27H, 00H, 00H
;       db 00H, 00H

ALIGN   16

SDL_Init:
       push    ebp                                     ; 681012C0 _ 55
       mov     ebp, esp                                ; 681012C1 _ 89. E5
       push    ebx                                     ; 681012C3 _ 53
       sub     esp, 4                                  ; 681012C4 _ 83. EC, 04
       mov     ebx, dword [ebp+8H]                     ; 681012C7 _ 8B. 5D, 08
       call    SDL_ClearError                          ; 681012CA _ E8, 00000441
       mov     dword [esp], ebx                        ; 681012CF _ 89. 1C 24
       call    SDL_InitSubSystem                       ; 681012D2 _ E8, FFFFFE79
       test    eax, eax                                ; 681012D7 _ 85. C0
       mov     edx, 4294967295                         ; 681012D9 _ BA, FFFFFFFF
       js      ?_0029                                  ; 681012DE _ 78, 0A
       and     ebx, 100000H                            ; 681012E0 _ 81. E3, 00100000
       jz      ?_0030                                  ; 681012E6 _ 74, 08
?_0028: xor     edx, edx                                ; 681012E8 _ 31. D2
?_0029: pop     ecx                                     ; 681012EA _ 59
       mov     eax, edx                                ; 681012EB _ 89. D0
       pop     ebx                                     ; 681012ED _ 5B
       pop     ebp                                     ; 681012EE _ 5D
       ret                                             ; 681012EF _ C3

?_0030: call    ?_0080                                  ; 681012F0 _ E8, 000004CB
       jmp     ?_0028                                  ; 681012F5 _ EB, F1

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

May 20, 2011

Sonunda Borland'ın ücretsiz C++ derleyicisinin yanında gelen 'coff2omf' programını kullanarak SDL.lib dosyasını uygun formata çevirebildim :-)

'dmd -c test.d sdl.d

link test.obj sdl.obj VC\SDL2.lib'

şeklinde de derledim ve çalıştı. Yalnız oldukça uğraştırıcı oldu :huh:

Ayrıca böyle araçları Digital Mars'ın parayla satmak istemesini anlamak mümkün değil.

http://www.digitalmars.com/ctg/coff2omf.html

'Basic utilities' isminde bazı araçları veriyorlar ama onun da zip dosyası bozuk.

http://ftp.digitalmars.com/bup.zip

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

May 20, 2011

Digital Mars'ın 'make' aracı için sonunda make dosyası yapabildim :)

Belki birilerinin işine yarayabilir diye buraya yazıyorum.

Alıntı:

>

DMD=dmd
KUTUPHANE=
lib\SDL.lib \

TEST=
test.d
sdl.d \

test.exe: $(TEST)
$(DMD) $** $(KUTUPHANE)

#all: test.exe

Derlemek için 'make -f win32.mak' yazmanız yeterli.

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