2010-10-03 1 views
37

Я получаю эту ошибку всякий раз, когда пытаюсь запустить GCC за пределами его установочного каталога (E: \ MinGW \ bin).CreateProcess: Нет такого файла или каталога

Итак, допустим, что я нахожусь в коде E: \ и имею файл с именем one.c. Запуск: gcc one.c -o one.exe даст мне эту ошибку:

gcc: CreateProcess: No such file or directory 

Единственный способ решения проблемы является переход его каталог установки, запуска GCC оттуда, и указать все другие пути. Моя переменная окружения «Путь» содержит E:\MinGW\bin.

Любые предложения по устранению этой проблемы? Я запускаю Windows XP SP3.

+3

Вы добавили его на путь ПОСЛЕ того, как вы получили эту ошибку, используя переменные окружения Windows GUI? Если вы это сделали, и вы пытаетесь запустить gcc в той же командной оболочке, которую вы использовали первоначально, это не сработает. У этой оболочки есть своя копия PATH, которая не изменилась при использовании графического интерфейса. Вы можете это увидеть, набрав echo% PATH% в командной оболочке. Самый быстрый способ исправить это - это выйти из системы и войти в систему. – George

+0

Ах, я подумал, что просто создать новый экземпляр CMD.exe будет достаточно, чтобы использовать новую переменную «PATH». Тем не менее, теперь он отлично работает, и я попытался выйти из системы и, похоже, работает нормально. Благодаря! – Insomaniacal

ответ

-1

В частности, он сказал, что вам нужно перезагрузиться после того, как вы установили переменные окружения в windows для migwin.

+31

неверно: в Windows 7 (возможно, также в Vista) достаточно открыть новую командную строку. В Windows XP было достаточно выйти и войти. Не требуется перезагрузка. – rubenvb

+13

Это не совсем неправильно. Это просто перебор. – AlicanC

+1

Вам не нужно это делать. Однако вам нужно загрузить новую командную оболочку для чтения новых переменных среды, которые вы изменили. – Arnestig

0

Добавить E:\MinGW\bin в PATH переменная.

+0

Это первое, что я сделал, но спасибо в любом случае:/ – Insomaniacal

+2

Если он не добавил его в PATH, подсказка даже не распознает gcc как программу. –

0

Похоже, есть несколько релизов дистрибутива для MinGW. Какой из них вы попробовали? Для записи я столкнулся с той же проблемой, что и OP, и дистрибутив я получил от TDM-GCC 4.5.1.

Я нашел, что MinGW distro here работает намного лучше и правильно устанавливает. Поэтому для тех, кто работает в этой задержанной ошибке «createprocess-no-such-file-or-directory» и не может заставить работать, удалите существующий MinGW и попробуйте тот, который я связал.

2

Получалось такое же сообщение об ошибке при попытке запустить из Cygwin со ссылками на установку mingw.

Использование той же самой установки mingw32-make-3.80.0-3.exe от http://www.mingw.org/wiki/FAQ и опции оболочки mingw от Start -> Programs -> на WinXP SP3 и gcc работает нормально.

26

У меня была подобная проблема, вызванная не установкой компилятора C++. В моем случае я компилировал файлы .cpp для расширения Python, но компилятор сначала вызывается как c: \ mingw \ bin \ gcc.exe.

Внутренне, gcc.exe заметил бы, что было предложено скомпилировать файл .cpp. Было бы попытаться вызвать г ++ EXE и не с тем же сообщением об ошибке:.

gcc.exe: CreateProcess: no such file or directory

+9

Ответ Луиса Бруно исправил мою проблему. Убедитесь, что вы установили правильный компилятор. Я пытаюсь скомпилировать файлы .cpp с gcc.exe, в то время как g ++ действительно требуется. mingw-get install g ++ очистил ошибку. –

+0

Отлично, чтобы помочь! –

+0

Да, это решило мою проблему. +1! – Dathan

26

Согласно Code::Blocks wiki, вам необходимо добавить к вашему C:\MinGW\libexec\gcc\mingw32\MinGW-VersionPATH. Нет необходимости перезапускать, но вам нужно открыть другой терминал, чтобы получить самые новые настройки PATH.

Для MinGW-w64, это <mingw install directory>\libexec\gcc\x86_64-w64-mingw32\4.7.0\

+3

Возможно, это не решило его для оригинального плаката, но это была моя проблема. Благодаря! – sleeves

+4

Нет ... мне не помогло. –

+4

Это была моя проблема. Я на 64-битном gcc (проект mingw64). Добавление <каталог установки mingw> \ libexec \ gcc \ x86_64-w64-mingw32 \ 4.7.0 \ исправлено. –

1

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

Для меня мне пришлось удалить MinGW/удалить папку MinGW и переустановить. После повторной установки он работает как шарм.

0

У меня была такая же проблема (я бегу Cygwin)

Запуск оболочки через cygwin.bat не помогло, но начиная оболочку через MingWShell сделал.Не совсем понятно, почему, но я думаю, что это как-то связано с дополнительным слоем, который cygwin ставит между исполняемым скриптом и базовой файловой системой.

я бегала пип установить внутри Cygwin виртуальной окр, чтобы установить Джанго часовому ..

+0

как вы загружаете mingwshell? – barlop

+0

Это хороший вопрос. Это было давно, и с тех пор я переформатировал, но из памяти, которую я установил через http://www.mingw.org/wiki/getting_started – Taras

+0

, вы можете показать мне конкретный рисунок, например. на изображениях Google, которые показывают, что у вас есть в виду/помнить mingw gui? – barlop

0

Решение для меня это просто:

  1. При сохранении программы, скажем, его назвали hi.cpp положить его в папку, например xxl затем сохраните вашу программу.

  2. Отрежьте эту папку и поместите ее в папку с бинтом.

  3. При вызове программы:

    ------ g++ xxl\hi.cpp -------- 
    
8

Я просто имел эту проблему.

В моем случае проблема возникла из-за проблем при загрузке пакетов для GCC. Программа mingw-get считала, что закончила загрузку, но этого не произошло.

Я хотел обновить GCC, поэтому я использовал mingw-get, чтобы получить более новую версию. По какой-то причине mingw-get подумал, что загрузка для определенного файла завершена, но это не так. Когда он отправился на извлечение файла, я предполагаю, что он выпустил ошибку (которую я даже не удосужился посмотреть - я просто запустил «mingw-get update & & mingw-get install mingw32-gcc» и оставил его там).

Чтобы решить, я удалил gcc, выполнив «mingw-get remove mingw32-gcc», а также удалил файл пакета (один из mingw-get не полностью загрузился), который был в папке mingw cache («C : \ MinGW \ var \ cache \ mingw-get \ packages "в моей системе), а затем снова запустить команду установки. Он загружает и устанавливает недостающие части GCC (он не полностью загрузил пакет gcc-core).

Это решило мою проблему.

Интересно, что mingw-get был достаточно умен, чтобы продолжить загрузку gcc-ядра даже после того, как я удалил файл пакета в папке кеша, а также удалил пакет mingw32-gcc.

Я думаю, что более фундаментальной проблемой было то, что, поскольку файлы gcc-core не были установлены, cc1 там не было. И gcc использует cc1. Я предполагаю, что, когда gcc попытался запустить cc1, он использовал CreateProcess где-то, проходящий путь cc1, который не был пути к существующему файлу. Таким образом, сообщение об ошибке.

+0

Мой диск был заполнен во время установки, и я предполагаю, что это вызвало проблему для меня, даже если mingw все еще установил без предупреждения. – Adder

5

У меня была точно такая же проблема.

После проверки моего PATH я понял, что установлен как Mingw (64 бит), так и Cygwin (32 бит). Проблема в том, что и у Mingw, и у Cygwin есть g++.

Дезактивируя путь Cygwin, ошибка исчезла.

0

Эта проблема может возникнуть, если у вас есть разные версии программ.

Например, у вас есть 1-летний gcc, и вы хотите скомпилировать исходный код на C++. Если вы используете mingw-get для установки g++, gcc и g++ будут иметь разные версии, и вы можете оказаться в этой ситуации.

Запуск mingw-get update и mingw-get upgrade решил этот вопрос для меня.

0

(Обращаясь к исходной задаче)
современной версии mingw (см Дата публикации)
Все, что я должен был сделать, чтобы установить путь в одной оболочке я выбежала gcc.
Взял меня часа, чтобы вспомнить, как установить DOS variables ...

A:> set PATH=C:\MinGW\bin\; 
C:\Program Files\ImageMagick-6.8.0-Q16\; 
C:\WINDOWS\system32\;C:\WINDOWS\;C:\WINDOWS\System32\Wbem\; 
C:\WINDOWS\system32\WindowsPowerShell\v1.0\; 
C:\Program Files\QuickTime\QTSystem\ 
A:> gcc hi.c 
2

Эта проблема в том, что вы используете прописную суффикс stuff.C, а не в нижнем регистре stuff.c при компиляции с GCC Mingw. Например, когда вы делаете так:

gcc -o stuff stuff.C 

, то вы получите сообщение: gcc: CreateProcess: No such file or directory

Но если вы сделаете это:

gcc -o stuff stuff.c 

затем он работает. Я просто не знаю, почему.

+1

Поскольку многие компиляторы Unix следуют соглашению, которое '.c' является расширением для файлов языка C, а' .C' (наряду с '.C++', '.cpp' и' .cxx') расширение для C++ файлы и mingw следует этому соглашению, так как его корни Unix. –

+0

Вы также можете определить параметр '-x c', чтобы явно указать' c' в качестве языка для следующих входных файлов. – splash

4

Так что это глупое сообщение об ошибке, потому что оно не сообщает вам , что файл не найден.

Запустите команду еще раз с помощью флагов gcc -v, чтобы узнать, что такое gcc.

В моем случае это случилось, он пытался позвонить cc1plus. Я проверил, у меня этого нет. Установил компилятор C++ mingw, а затем я это сделал.

0

У меня возникла аналогичная проблема. Первоначально добавление папки GCC bin на мой системный путь не помогло решить проблему. Я нашел два решения.

Первым был запуск командного файла, который я нашел в корне установки MinGW, mingwbuilds.bat. Он (по-видимому) запускает командную строку, настроенную правильно для запуска GCC. Во-вторых, было удалено двойные кавычки из папки установочного bin GCC, которые я добавил в мою переменную пути пользователя. Я попробовал это, заметив командный файл, не используя двойные кавычки вокруг пути установки bin.

Дополнительные детали

Я нашел пакетный файл случайно во время просмотра дерева установки папки, пытаясь найти различные исполняемые файлы, которые не запуская (в соответствии с -v выходом). Я нашел некоторую информацию о вики MinGW, http://www.mingw.org/wiki/Getting_Started, в разделах «Предостережения и настройки среды», которая указывает, почему установщик MinGW не настроил системный или пользовательский путь для включения папки установки. Кажется, они подтверждают, что командный файл предназначен для запуска командной строки, подходящей для запуска GCC из приглашения Windows.

0

У меня была такая же проблема, и я пробовал все без каких-либо результатов. Для меня была решена проблема изменения порядка путей библиотеки в переменной PATH.У меня был cygwin, а также некоторые другие компиляторы, поэтому между ними, вероятно, было какое-то столкновение. То, что я сделал, это положить C: \ MinGW \ bin; путь сначала перед всеми другими путями, и он исправил проблему для меня!

0

попытайтесь поместить путь в системные переменные вместо того, чтобы помещать пользовательские переменные в переменные среды.

0

Я получал это сообщение об ошибке, потому что использовал MinGW-w64, а команды <install path>\bin имели странный префикс. Я попытался вызвать исполняемые файлы в каталогах «target alias», а не в каталогах <install path>\bin, что привело к еще большему количеству проблем. Это не-нет по FAQ. Тогда решение для меня заключалось в создании символических ссылок на все префиксные команды. Я открыл командную строку с повышенными полномочиями и использовал для чего-то вроде mklink gcc.exe x86_64-w64-mingw32-gcc.exe, и теперь моя сборка работает.

0

Хотя пост старый, у меня была та же проблема с mingw32 vers 4.8.1 от 2015/02/13. С этим сообщением завершилось компиляция с использованием Eclipse CDT. Также не удалось выполнить попытку из командной строки с опцией -v. Мне также не хватает исполняемого файла cc1plus.

Причина: Я загрузил командную строку и графический установщик с сайта mingw32. Я использовал это, чтобы выполнить мою первоначальную установку mingw32. Используя GUI, я выбрал базовые инструменты, выбрав компиляторы c и C++.

Этот установщик выполнил неполную установку 32-битного компилятора C++. У меня были файлы g ++ и cpp, но не исполняемый файл cc1plus. Попытка выполнить «обновление» не удалась, потому что установщик предположил, что все установлено.

Чтобы исправить я нашел эти сайты: http://mingw-w64.sourceforge.net/ http://sourceforge.net/projects/mingw-w64/ я скачал и побежал это "онлайн установки. Конечно, в этом содержатся недостающие файлы. Я изменил свою переменную PATH и указал на папку «bin», содержащую исполняемый файл g ++. Rebooted. Установлено 64-битное Eclipse. Открытые Eclipse и программа Hello C++ скомпилированы, выполнены и отлажены правильно.

Примечание: 64-разрядный установщик по умолчанию имеет настройки UNIX. Почему установщик не может определить ОС? Обязательно измените их.

Я провел целый вечер с этим. Надеюсь, это поможет кому-то.

+0

Поскольку проект mingw-w64 на sourceforge.net переместился на mingw-w64.org, я предлагаю использовать [mingw-w64.org] (http://mingw-w64.org) – POQDavid

1

В «дайте человеку рыбу, накормите его на один день, научите человека ловить рыбу, избавиться от него на весь уик-энд»,

g++ --help
показывает параметры компилятора. Опция g ++ -v помогает:

 -v      Display the programs invoked by the compiler

Просмотрите выходные данные для фиктивных путей. В моем случае исходная команда:

g++ -v "d:/UW_Work/EasyUnit/examples/1-BasicUnitTesting/main.cpp"

Сгенерированных включая этот маленький драгоценный камень:

-iprefix c:\olimexods\yagarto\arm-none-eabi\bin\../lib/gcc/arm-none-eabi/4.5.1/

, который бы объяснить «нет такого файла или каталога» сообщения.

«../lib/gcc/arm-none-eabi/4.5.1/» сегмент поступает из встроенных в спецификации:

g++ -dumpspecs
1

У меня был очень длинный путь, и есть файл там где-то (не gcc.exe), а другой файл, с которого gcc.exe обращается к пути.

Так что, когда я очистил путь, он работал

C:\MinGW>cd bin 


C:\MinGW\bin>where gcc.exe 
C:\MinGW\bin\gcc.exe 
C:\Perl64\site\bin\gcc.exe 

^^ Так работает GCC оттуда определенно запустить мина gcc.exe

C:\MinGW\bin>type file6.c 
#include<stdio.h> 
void main() 
{ 
int num1,num2; 
scanf("%2d %4d",&num1,&num2); 
printf("a=%d b=%d",num1,num2); 
scanf("%d",&num1); 
//flushall(); 
printf("c=%d",num1); 
} 

компиляции я получил эту ошибку

C:\MinGW\bin>gcc file6.c 
gcc: error: CreateProcess: No such file or directory 

Мой ПУТЬ был огромный

C:\MinGW\bin>path 
PATH=C:\Windows\system32;C:\Windows;C:\Windows\system32\wbem;C:\P...... 

C: \ MinGW \ bin> путь | grep -io "ming"

У этого не было мин.

C: \ MinGW \ bin> эхо MING | Grep -io "мина" MING

(и да, что Grep works..the путь не имеет мина там)

Очистка мой путь полностью, привел его на работу!

C:\MinGW\bin>set PATH= 

C:\MinGW\bin>gcc file6.c 

C:\MinGW\bin> 

Итак, пока неясно, что именно в ПУТЕ привело к столкновению. Какой каталог, какой файл.

Обновление-

выше кажется правильным для меня, но добавить, что это также не простой случай чего-то ранее в пути сталкиваясь .. потому что обычно текущий каталог имеет приоритет. И он здесь, поскольку gcc -version показывает, что он запускает ming, а не один из них в конфликтующем каталоге. Итак, есть что-то смешное, если конфликтный каталог находится в пути), нужно либо сделать. \ Gcc, либо добавить . в начало пути, либо добавить c:\MinGW\bin перед любыми конфликтующими каталогами в пути. это так, даже если вы находитесь в C:\MinGW\bin, и это странно. И когда он дает ошибку, он все еще запускает gcc Ming, но (по какой-то причине) также смотрит на конфликтующий каталог, как я вижу на мониторе процесса. Там может быть больше ответа здесь http://wiki.codeblocks.org/index.php?title=Installing_MinGW_with_Vista в ссылке, указанной в очень upvoted ответ здесь

Это Ming32 немного ..

Глядя на Мин 64bit, вероятно, имеет тэ такой же вопрос, но я вижу, что интересно, это поставляется с файлом bat, который (разумно) фактически помещает каталог bin в терпкий путь. И похоже, что это стандартный способ правильной работы Ming gcc.

Код :: блокирует IDE (разумно) также помещает каталог bin в начале пути. Если вы запустите программу на C, которая отображает переменные среды, вы увидите это.

0

У меня была та же проблема.

я уже был г ++ компилятор установлен через MinGW (пакет mingw32-GCC-г ++), но мне нужен C компилятор, так что я побежал MinGW-получить-setup.exe, где я был в состоянии иметь это установить mingw32-base пакет, один с компилятором C.

Увы!Я имел эту ошибку, когда я использую GCC для компиляции:

НКУ: ошибка: CreateProcess: нет такого файла или каталога

То, что я сделал, до сих пор с помощью диспетчера установки MinGW, я удалил C и C++ компиляторы, а именно mingw32-base и mingw32-gcc-g ++ и ТАКЖЕ удалили сам каталог C: \ MinGW. Затем я повторно запустил mingw-get-setup.exe, установил mingw32-base, и voila, он работал :)

1

У меня была такая же проблема, но ни одна из перечисленных в настоящее время решений не помогла при первой попытке.

-v вариант не дал никаких дополнительных подсказок.

Придется прибегнуть к ProcMon, чтобы найти корень проблемы.

Dumping g++ Активность файла процесса выявила многочисленные попытки найти cc1plus исполняемый файл на разных путях. Среди них были пути к старой версии GCC.

Но эта старая версия находится в отдельной папке и на ней совсем не ссылается на новую версию, которую я пытался запустить.

Наконец, устаревший путь был найден в переменной среды% PATH%. После его удаления новая версия начала работать без ошибок.