【问题标题】:Cant compile D program using GDC无法使用 GDC 编译 D 程序
【发布时间】:2015-10-26 12:10:03
【问题描述】:

我正在尝试使用 GDC 编译 D 程序。我目前使用的是 Windows XP SP3,我使用从这里下载的“Windows X86 32bit (i686-w64-mingw32)”包: http://gdcproject.org/downloads(底部的链接)。 因此,当我解压缩二进制文件并调用 gdc 来编译一个简单的程序时,如下所示:

import std.stdio;

void main() {
     writeln("Hello World. ");
}

我收到一堆汇编错误:

http://pastebin.com/1kwU10Tz

我知道指向“不支持的 alpha 版本”的链接,但我真的不明白这条消息的含义(也许你可以告诉我)。但尽管如此,我还是尝试从存档中下载早期版本,但都因类似错误而失败。

有没有办法解决这个问题?还是我在这里遗漏了一些关键点。

编辑: 这是编译器生成的汇编代码: http://pastebin.com/w5q0rNNd

【问题讨论】:

  • 你考虑过使用 Linux 吗?它的gdc 效果很好,许多发行版都在打包它!
  • 能否添加-S开关并附上生成的汇编代码? (它应该在-o 选项指定的文件中)。
  • 您的PATH 中是否还有另一个类似 GNU 的编译器工具链?
  • @BasileStarynkevitch 我正在考虑使用 Linux,但我的问题是我不知道正确支持我的显卡的发行版(Geforce GT 240)
  • @Cyber​​Shadow 不,PATH 中没有任何内容,我知道这将是一个问题,所以我有意识地从 PATH 中删除了 mingw bin。

标签: assembly mingw d gnu-assembler gdc


【解决方案1】:

GDC 窗口构建确实被破坏了。对于最新版本,我们只检查了代码是否可以编译。我们甚至没有对这些版本进行冒烟测试。我们没有正确测试 MinGW 端口的工具,只要我们无法正确测试,完成端口就没有任何用处。我希望这会在今年晚些时候有所改变,但我不会做出任何承诺 ;-) 现在,我从 gdcproject 页面中删除了下载链接。

TL;DR:不要使用 MinGW GDC 构建,它们已损坏。

有关错误消息的一些信息:如果您查看 ASM,您会看到如下名称: __D11TypeInfo_(null)6__initZ

符号名称不能包含括号。在 MinGW 上打印名称时出现问题。在 GDC 中打印这些标识符的代码如下所示: sprintf(name, "_D%lluTypeInfo_%s6__initZ", (unsigned long long) 9 + len, buf.data); 所以OutBuffersprintf 有一些问题。我必须进行更多调试才能找到真正的问题。

错误报告:http://bugzilla.gdcproject.org/show_bug.cgi?id=201

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多