Cygwin GCC + WinXP cmd.exe ничего не делает - PullRequest
2 голосов
/ 07 июня 2010

Моя основная проблема заключается в том, что если я запускаю GCC из командной строки Windows (cmd.exe в Windows XP), и он ничего не делает: файлы .o не создаются, сообщений об ошибках нет, ничего. Он выдаст только сообщение об ошибке, если я буду использовать пути в стиле DOS, но не более того. Когда я запускаю из оболочки Cygwin, она генерирует сообщения об ошибках, соответствующие ошибкам в источнике, и создает файлы .o по мере необходимости. Использование make из командной строки DOS также не работает. Кто-нибудь сталкивался с таким поведением раньше?

Ответы [ 2 ]

2 голосов
/ 10 июня 2010

Я действительно достиг определенного прогресса в этом. Справочная информация:

У меня установлен WinAVR и его каталоги bin установлены в моем PATH. WinAVR - это GCC и связанные утилиты разработки, но для 8-битного микроконтроллера AVR. Он имеет много общих имен утилит с обычным GCC.

В прошлом я помню, как Cygwin помещал свои каталоги bin в PATH. Похоже, на этот раз он этого не сделал, поэтому я поместил «C: \ cygwin \ bin» в PATH, а затем и «C: \ cygwin \ usr \ bin».

В последней версии Cygwin есть проблемы с обработкой файлов. По сути, gcc.exe - это не исполняемый файл, а тип символической ссылки на фактический исполняемый файл (который может быть gcc-3.exe или gcc-4.exe в зависимости от того, что вы установили). В оболочке BASH эти символические ссылки легко разрешаются, а в cmd.exe - нет. Это означает, что если вы попытаетесь ввести «gcc» в cmd.exe в качестве команды, он ответит «Доступ запрещен». Решением для этого является вызов фактического имени файла GCC (gcc-4) вместо символической ссылки.

Решение, похоже, пришло, переставив мой PATH. Чтобы изменить переменную среды PATH, щелкните правой кнопкой мыши «Мой компьютер» и перейдите к свойствам, затем «Дополнительно», а затем «Переменные среды». В разделе «Системные переменные» найдите «Путь» и дважды щелкните его для редактирования. Удалите все записи, в которых есть C: \ cygwin, затем перейдите к ПЕРЕДНЕМУ ПУТИ и введите их там. Для меня это были C: \ cygwin \ bin и C: \ cygwin \ usr \ bin. Для меня важной частью было убедиться, что записи Cygwin были до записей WinAVR. Я заметил, что когда я пытался вызвать «make» в cmd.exe, он вызывал версию WinAVR вместо версии Cygwin. Это привело меня к изменению моего пути, и после некоторой дурачливости стало ясно, что использование gcc-4 из оболочки cmd.exe работает. Затем он работал в Code :: Blocks, и я был выключен.

В качестве альтернативы, он мог бы просто полностью отделиться от чего-то другого. У компьютеров есть способ сделать это.

0 голосов
/ 07 февраля 2013

В качестве альтернативы вы можете удалить файл: gcc.exe, который является ссылкой на файл и переименовать фактический исполняемый файл gcc: от gcc-3.exe (или gcc-4.exe зависит от вашей версии) до gcc.exe

...