Я пытался на прошлой неделе или около того скомпилировать любую из компиляторов GCC 4 для работы в MinGW 5.1.6/MSYS 1.0.11 (автоматические установщики как от Sourceforge.org), который поставляется с версией GCC версии 3.4.5. Конечная цель - установить GCC 4.5 для установки, но я не смог собрать компиляторы 4.x.x для сборки.Компиляция GCC 4.xx на MinGW/MSYS Fails
Я сузил его до последовательности инструкций сборки, которые приводят к некоторому необычному поведению. Компилятор выполняет:
build/genmodes.exe > tmp-modes.c
/bin/sh ../../gcc-4.2.4/gcc/../move-if-change tmp-modes.c insn-modes.c
echo timestamp > s-modes
gcc -c -g -fkeep-inline-functions -DIN_GCC -W -Wall -Wwrite-strings
-Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -Wmissing-format-attribute
-fno-common -DHAVE_CONFIG_H -I. -I. -I../../gcc-4.2.4/gcc -I../../gcc-4.2.4/gcc/.
-I../../gcc-4.2.4/gcc/../include -I./../intl -I../../gcc-4.2.4/gcc/../libcpp/include
-I../../gcc-4.2.4/gcc/../libdecnumber -I../libdecnumber insn-modes.c -o insn-modes.o
cc1.exe: out of memory allocating 2239725803 bytes
make[3]: *** [insn-modes.o] Error 1
make[3]: Leaving directory `/home/root/gcc-4.2.4-build/gcc'
make[2]: *** [all-stage1-gcc] Error 2
make[2]: Leaving directory `/home/root/gcc-4.2.4-build'
make[1]: *** [stage1-bubble] Error 2
make[1]: Leaving directory `/home/root/gcc-4.2.4-build'
make: *** [all] Error 2
Основная проблема заключается в вызове genmodes.exe. Он создает файл C (insn-modes.c) размером около 2 ГБ и который, насколько я могу судить, заполнен в основном пробелами (хотя там и там разбросаны отдельные строки кода C). GCC 3.4.5 дросселей на нем, и вот как заканчивается сборка. Подобное поведение проявляется во всех версиях, которые я пробовал, кроме 4.5, которые не срабатывают по другим причинам, которые я надеялся вылечить, используя промежуточную версию компилятора.
Итак, три вопроса:
- Кто-нибудь еще сталкивался с этим?
- Что вызывает это?
- Что, если какой-либо обходной путь существует?
Я пытаюсь сделать это на 64-битной машине Windows 7.
Спасибо.
Обновление: я загрузил сжатую копию двух файлов подозреваемых в this location. Оказывается, min-insn-modes.c также больше, чем должно быть. Эти два файла (более 3 ГБ) сжимаются до 121 КБ.
Я обновил вопрос и разместил ссылку на zip двух файлов подозреваемого (min-insn-modes.c и insn-modes.c). – andand
andand: обновленный мой ответ, новая вещь для вас, если вы не возражаете. – zwol
Оба из них получили код для компиляции. Однако это предложение обращается ко мне, поскольку оно ближе к тому, что было в исходном источнике genmodes.c. – andand