2015-10-26 4 views
1

Я пытаюсь скомпилировать программу D с помощью GDC. Я в настоящее время на Windows XP SP3, и я использую пакет «32-разрядный (i686-w64-mingw32)» для Windows X86: http://gdcproject.org/downloads (ссылка внизу). Поэтому, когда я распаковать файлы и я призываю GDC составить простую программу, как это:Невозможно скомпилировать программу D с помощью GDC

import std.stdio; 

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

я получаю кучу ошибок на ассемблере:

http://pastebin.com/1kwU10Tz

Я знаю, что ссылка на говорит «Неподдерживаемая альфа-сборка», но я действительно не понимаю, что означает это сообщение (возможно, вы можете мне рассказать). Но, тем не менее, я пытаюсь загрузить более ранние версии из архива и все сбой с аналогичными ошибками.

Есть ли способ решить эту проблему? Или я пропустил какой-то важный момент здесь.

EDIT: Вот сборка код, генерируемый компилятором: http://pastebin.com/w5q0rNNd

+0

Считаете ли вы использование Linux? Его 'gdc' отлично работает, и многие дистрибутивы его упаковывают! –

+0

Можете ли вы добавить переключатель '-S' и подключить сгенерированный код сборки? (он должен быть в файле, указанном опцией -o'). – keltar

+0

Возможно, у вас есть еще одна компиляционная компилятор GNU-like в вашей 'PATH'? –

ответ

2

КРИ окна строит действительно сломана. Для последних выпусков мы только проверили, что код компилируется. Мы даже не проводили тестирование дыма для этих выпусков. У нас нет инструментов для правильной проверки порта 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); Итак, есть некоторые проблемы с OutBuffer или sprintf. Мне нужно будет еще немного отладки, чтобы найти настоящую проблему.

Сообщение об ошибке: http://bugzilla.gdcproject.org/show_bug.cgi?id=201

Смежные вопросы