`
zsxxsz
  • 浏览: 444905 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

dmd.2.029 编译过程

阅读更多
D编译完全开源了,于是忍不住下载了最新的dmd编译源码(dmd.2.029),然后在Redhat AS3上进行编译,但是还是遇到了一些小问题。下面将详细过程介绍一下:
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/ 目录,
同时修改环境变量设置,将 xxx/dmd/linux/bin, xxx/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;
个人微博:http://weibo.com/zsxxsz
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics