ошибка при попытке компиляции с помощью MinGW: не удается выполнить cc1plus

#c #g #mingw

#c #g #mingw

Вопрос:

Я выполнил чистую установку MinGW в Windows 7 32bit с помощью установщика GUI и установил

  • ming32-base-bin
  • mingw32-gcc-g -bin
  • msys-base-bin

При попытке скомпилировать простое «Привет World.cpp » из cmd.exe я получаю сообщение об ошибке:

C:UsersLorenzoDesktop >g «Привет World.cpp » -о»Привет World.exe » -m32 g : неустранимая ошибка: не удается выполнить «cc1plus»: CreateProcess: нет такого файла или каталога. компиляция завершена.

Странно то, что, взяв файл с рабочего стола и поместив его поверх g .exe (чтобы я открыл файл с приложением) в каталоге MinGW, я не получаю никаких ошибок.

Временное исправление, которое я нашел, заключалось в том, что новая переменная environmet указывала на папку, в которой находится cc1plus (C:MinGWlibexecgccmingw329.2.0 ). Программа запускается, но не включает библиотеки из C:/MinGw/lib и C:/MinGw/Include , я должен включить их вручную, чего не должно произойти (я думаю). Я не хочу делать это грубое исправление, так как знаю, что со временем столкнусь с некоторыми другими проблемами.

Комментарии:

1. CreateProcess не является функцией glibc. Это Windows API (существует в windows.h и Kernel32.dll ). Таким образом, g ** недопустим. Пожалуйста, используйте компилятор Win32 C или замените CreateProcess как функцию exec().

2. Это звучит как проблема с вашими переменными среды. Как вы %PATH% выглядите?

3. @SamuelD.Muprhy извините, но я действительно не понимаю, что вы говорите. должен ли я запускать команду с другого терминала? запустить другой компилятор? извините, но я совсем новичок в этом.

4. @Botje Путь: «C:Program ФайлыОбщие FilesOracleJavajavapath;%SystemRoot%system32;%SystemRoot%;%SystemRoot%System32Wbem;%SYSTEMROOT%System32WindowsPowerShellv1.0;C:MinGWbin;»

5. И где в вашей системе находится cc1plus.exe ? Похоже, это также должно быть на вашем ПУТИ.

Ответ №1:

ОК. Я нашел решение с некоторой удачей.

Это так же просто, как добавить .exe в g

 > g  .exe *input file* -o*output.exe*
  

Не знаю, ошибка это или нет, но у меня это работает.

Комментарии:

1. Также я бы очень рекомендовал избегать пробелов в путях и именах файлов.

Ответ №2:

Я не уверен, какой именно MinGW вы использовали, но лучше использовать MinGW-w64. Существует автономная сборка, которую вы можете получить из http://winlibs.com / это не требует установки. На сайте также приведены некоторые инструкции по его использованию.

Комментарии:

1. почему лучше использовать MinGW-w64?

2. @L_or_Enzo он более современный (поддерживает API более последних версий Windows) и поддерживает как 32, так и 64-разрядные версии Windows.