dmd 2 029 編譯過程

2021-06-25 12:50:04 字數 1754 閱讀 1169

1) 先解壓

unzip dmd.2.029.zip

便生成目錄 dmd, 該目錄下有:src/, linux/, windows/samples/ 等目錄

2) 編譯dmd編譯器

cd dmd/src/dmd/

make

# 便會報錯

backend/dwarf.c:54:26: ../mars/mars.h: no such file or directory

# 於是建立目錄同時要拷貝兩個檔案至新建目錄:

make mars

cp mars.h mars/

cp complex_t.h mars/

# ok,編譯器完畢,將以下幾個可執行檔案拷貝至 dmd/linux/bin/ 目錄下:

cp dmd idgen optabgen  impcnvgen ../../linux/bin/

3) 編譯執行時庫

cd dmd/src/druntime/src

chmod 755 build-dmd.sh

./build-dmd.sh

# 於是報錯

: no such file or directory

# 為找到各種原因,本人花了好久,終於搞明白是因為 build-dmd.sh 的原始格式為dos格式,

# 所以需要轉換為 unix 格式

# 於是乎用工具將 build-dmd.sh 由dos格式轉換為unix格式, 再執行:

./build-dmd.sh

# ok

4) 編譯 phobos 庫,裡面包含常用的函式庫

cd dmd/src/phobos

make -f linux.mak

# 於是報錯

make: *** no rule to make target `../druntime/lib/libdruntime.a', needed by `obj/posix/release/libphobos2.a'.  stop.

# 解決方法如下:

cd dmd/src/druntime/lib/

ln -s release/libdruntime.a libdruntime.a

# 然後

cd dmd/src/phobos

make -f linux.mak

# ok, 編譯 phobos 成功,同時會自動將庫 libphobos2.a 拷貝至 dmd/linux/lib/ 目錄

5) 最後將 dmd/src/druntime/lib/release/ 目錄下的所有庫拷貝至 dmd/linux/lib/ 目錄,

同時修改環境變數設定,將 ***/dmd/linux/bin, ***/dmd/linux/lib 放入個人環境變數中

不知即將發布的 dmd.2.030 會不會將這些小問題都給解決了:)

另外,本人在編譯 dmd/samples/ 下的例子時,發現基本上是編譯不過去,檢視了原始碼,原來裡面用的庫基本都是 dmd.1.0 的庫,希望 walter bright 等人將此類問題都解決了,呵呵

注:以上僅是將dmd.2.029 在redhat as4的編譯過程,如果想要在as3上編譯通過,還需要將附件的 linux.mak 替換 src/phobos/ 目錄下的 linux.mak;

補充:如果你用的dmd.2.030在 as3上編譯,則需要將 linux.2.030.rar 替換 src/phobos/ 下的 linux.mak;

個人微博:

dmd 2 029 編譯過程

1 先解壓 unzip dmd.2.029.zip 便生成目錄 dmd,該目錄下有 src linux windows samples 等目錄 2 編譯dmd編譯器 cd dmd src dmd make 便會報錯 backend dwarf.c 54 26 mars mars.h no such ...

D語言編譯器DMD開源了

自從1999年12月,walter設計開發d語言以來,d語言的編譯器dmd因為不開源,成了業界的詬病。walter曾經承諾,將開放源 偉大的walter bright在今天2009年3月5日下午18點40分 中國時間 釋放出了d1和d2的前端和後端的源 開源協議為gpl1.0或者artistic l...

編譯原理 編譯過程概述

編譯程式即是將高階語言書寫的源程式翻譯成與之等價的目標程式 組合語言或機器語言 其工作可分為六個階段,見下圖 對於編譯的各個階段,邏輯上可以劃分為前端和後端兩部分。前端包括詞法分析到中間 生成中各個階段的工作,後端則是優化及目標 生成的階段。以中間 為分水嶺的原因是把編譯過程分解為與機器有關和無關兩...