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