Я использую Code :: Blocks (версия 13.12) с MinGW (версия 4.7.1) на 32-разрядной Windows 7.
При попытке создать мой проект я получаю следующую ошибку после этапа компиляции:
Execution of 'mingw32-g++.exe -o cb_dlv.exe
...huge list of *.o files...
in 'D:\Workspace\cb_dlv' failed.
Конечно, нет проблем с исполняемыми файлами toolchain, так как мои другие проекты компилируются и хорошо связаны, и все инструменты находятся в их правильных местах. mingw32-g++.exe
видно из cmd
поэтому никаких проблем с PATH
. Рабочее пространство для очистки также никоим образом не помогает. Я уже пытался переместить файлы проекта, чтобы в пути не было пробелов, но это тоже не помогло. Также как повторное открытие/переустановка/перезагрузка.
Какие-либо предложения?
Так как я нашел решение, вот оно.
Основная проблема заключалась в том, что в Windows 7 ограничение на длину командной строки составляет около 32 тыс. Символов. MinGW компилятор и компоновщик попали в этот предел, строя проекты с огромным количеством файлов в них. Это фундаментальное ограничение API Windows, которое использует MinGW.
Решение: сократите командную строку любым способом: объедините несколько файлов в один отдельный проект на несколько, переименуйте подкаталоги с длинными именами и т.д.
Вы настроили свой проект на использование настраиваемого файла makefile? Каковы ваши системные переменные сборки? Доступны ли объектные файлы в D:\Workspace\cb_dlv? Это единственный выход вашего журнала компиляции или есть другой выход до него? Ваши целевые задачи по созданию проекта настроены разумно?
вы должны увидеть журнал системы сборки, что он компилирует ваши файлы c/c++ в объектные файлы до того, как произойдет последний этап компоновки, например:
mingw32-g++.exe -c D:\Workspace\cb_dlv\file.c -o D:\Workspace\cb_dlv\obj\Debug\file.o
Пожалуйста, сформулируйте этот вопрос еще немного, и я могу помочь вам.
mingw32-g++.exe -w -nostdinc -nostdinc++ ...some internal defines... ...list of headers' directories... -ID: -c "D:\Workspace\dlv\Stack.cpp" -o "obj\Stack.o"
. Причина использования -nostdinc и -nostdinc ++ состоит в том, что я пытаюсь скомпилировать библиотеку, которая имеет собственную реализацию стандартных заголовков.