Я загрузил сборку Rubens из Cygwin GCC.
Однако при запуске он не может скомпилировать файлы
$ touch foo.c $ gcc foo.c gcc: error: spawn: No such file or directory
В качестве обходного пути я нашел, что это работает
i686-w64-mingw32-gcc foo.c
Я загрузил сборку Rubens из Cygwin GCC.
Однако при запуске он не может скомпилировать файлы
$ touch foo.c $ gcc foo.c gcc: error: spawn: No such file or directory
В качестве обходного пути я нашел, что это работает
i686-w64-mingw32-gcc foo.c
У меня была такая же проблема на Cygwin64, и решение было связано с PATH..kinda.
Оказывается, есть копии gcc в /usr/bin и /bin (по крайней мере, есть в моей установке).
Выполнение /bin/gcc завершилось с ошибкой выше - я предполагаю, из-за неправильно принятых относительных путей???
Выполнение /usr/bin/gcc работает должным образом!
В моем случае "проблема" заключалась в том, что я непреднамеренно ввел "/bin" в свою переменную среды PATH, в результате выполнялся /bin/gcc вместо /usr/bin/gcc. Удаление "/bin" с пути разрешило проблему.
Все еще неясно, почему в разных местах есть два gcc-двоичных файла (которые кажутся одинаковыми)... но, возможно, гуру Cygwin могут ответить на это; или, может быть, моя установка просто заблокирована.
У меня была та же проблема и она была решена путем установки пакета g++ в дополнение к gcc-core
Конструкции Ruben не являются пакетами Cygwin GCC, скорее они являются кросс-компиляторами, которые работают на разных платформах, но нацелены на родные Windows, используя инструментальную цепочку MinGW-w64.
В любом случае, вы не должны использовать их в Cygwin. Если вы хотите скомпилировать исполняемые файлы Cygwin, установите gcc4-пакеты; если вы хотите перекрестно скомпилировать для Windows, установите вместо этого пакеты mingw64-i686-gcc (для Win32) или mingw64-x86_64-gcc (для Win64).
Gcc на самом деле не является компилятором. Это программа интерфейса, которая организует выполнение любых необходимых компонентов компилятора, ассемблера и компоновщика. Обычно эти другие являются отдельными скомпилированными программами.
Итак, gcc пытается (вроде) сказать вам, что он не может найти компилятор. Я предполагаю, что это должно быть на вашем PATH или в ожидаемом месте.
Если вы выполняете это из окна Windows DOS, то определенно требуется установка PATH для Windows.
Мне нравится устанавливать Cygwin, чтобы включить rxvt. В этот момент вы можете настроить чисто sh (1) путь, и ваша среда будет более цивилизованной.
Эта ошибка возникает, когда cygwin cc не может найти требуемый файл.
Для тех, кто запускает файлы в bin cygwin непосредственно из оболочки Windows, вы можете следить за тем, что Windows позволяет запускать программы из командной строки следующим образом:
e:cyg/bin/gcc -flags
Обратите внимание, что между e:
и cyg
нет косой cyg
.
Таким образом, эта команда успешно запускает cygwin gcc из оболочки Windows, но на полпути через ее выполнение будет выведено из строя, потому что какой-то компонент gcc
будет использовать первый аргумент ввода e:cyg/bin/gcc
и в отличие от mingw, этот не является допустимым путем для cygwin gcc.
Это можно устранить, просто изменив команду на:
e:/cyg/bin/gcc -flags
Обратите внимание на косую черту между e:
и cyg
.
Аналогичная проблема возникает из-за того, что Windows разрешает такие пути, как e:/../folder1
в качестве альтернативы e: /folder1
. Windows не дает вам ошибки, если вы находитесь в корневой папке и пытаетесь перейти в другую папку, используя ..
Таким образом, вы можете запустить cygwin gcc с помощью команды:
e:/../cyg/bin/gcc -flags
..или даже:
e:/../../../../../../../../../cyg/bin/gcc -flags
Тем не менее, он потерпит неудачу на полпути с gcc: error: spawn: No such file or directory
потому что какой-то компонент cygwin gcc попытается запустить gcc
используя первый аргумент самого ввода команды, и в отличие от mingw, e:/../cyg/bin/gcc
не распознается как допустимый путь cygwin, потому что вы поднимаетесь в папку, когда нет папки для перехода.
Как и выше, это можно устранить, сохранив допустимый путь:
e:/cyg/bin/gcc -flags
Убедитесь, что расширение исходного файла находится в нижнем регистре (то есть main.c, а не main.C):
$ gcc -o main main.C
$ gcc: error: spawn: No such file or directory
$ gcc -o main main.c
$ # all good
Это относится только к случаю расширения, заданного gcc, фактический исходный файл может иметь расширение в любом случае, который вы хотите.
Объяснение: Это из моих экспериментов с cygwin и gcc, я не знаю реальной причины такого поведения.
У меня была такая же ошибка, когда я попытался извлечь пару исполняемых файлов из cygwin install dirctory и скопировать их в другое место.
strace показывает мне файл, который не был найден икру:
/lib/gcc/x86_64-pc-cygwin/6.4.0/cc1.exe
Когда я скопировал cc1.exe в местоположение относительно
<dir with sh.exe and cpp.exe>/../lib/gcc/x86_64-pc-cygwin/6.4.0/cc1.exe
он отлично работает.