另一个MinGW问题:“gcc:error:CreateProcess:找不到文件或目录”

15
我已经通过GUI安装程序在Windows 8(64位)上安装了MinGW C编译器。但是当我尝试编译C程序时,gcc显示:gcc: CreateProcess: No such file or directory 这是一个常见的错误,我已经尝试了所有我能找到的解决方案,但都没有成功。
特别地,在CreateProcess: No such file or directory之后,我尝试过以下方法:
  1. [编辑]将C:\ MinGw \ libexec \ gcc \ mingw32 \ 4.7.2添加到系统PATH中
  2. 通过mingw-get CLI卸载并重新安装gcc:

    mingw-get remove mingw32-gcc
    mingw-get install mingw32-gcc

还有其他建议吗?
编辑:详细输出gcc:
> gcc -v helloWorld.c
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/4.7.2/lto-
wrapper.exe
Target: mingw32
Configured with: ../gcc-4.7.2/configure --enable-languages=c,c++,ada,fortran,obj
c,obj-c++ --disable-sjlj-exceptions --with-dwarf2 --enable-shared --enable-libgo
mp --disable-win32-registry --enable-libstdcxx-debug --disable-build-poststage1-
with-cxx --enable-version-specific-runtime-libs --build=mingw32 --prefix=/mingw
Thread model: win32
gcc version 4.7.2 (GCC)
COLLECT_GCC_OPTIONS='-v' '-mtune=i386' '-march=i386'
cc1plus -quiet -v -iprefix c:\mingw\bin\../lib/gcc/mingw32/4.7.2/
OPTIONS.C -quiet -dumpbase OPTIONS.C -mtune=i386 -march=i386 -auxbase OPTIONS -
version -o C:\Users\elvis\AppData\Local\Temp\cc4fWSvg.s
gcc: error: CreateProcess: No such file or directory

你使用的是实际文本"C:\MinGw\libexec\gcc\mingw32"MinGW-Version",还是编译器的版本?此外,你的硬盘上的gcc.exe在哪里? - mmmmmm
除非您能提供更多有关区别的信息,否则这是您引用的问题的完全重复。 - mmmmmm
2
可能 @alk 意思是编译程序的完整命令,而不是安装。或者您使用的是集成开发环境(IDE)? - rodrigo
@rodrigo 和 alk - 只需简单的 "gcc helloWorld.c" 就会显示错误。 - eang
1
尝试运行 gcc -v helloWorld.c 并将结果粘贴在此处。它应该会告诉你它正在尝试运行什么。 - rodrigo
显示剩余10条评论
9个回答

12

不应将 C:\MinGw\libexec\gcc\mingw32\4.7.2 添加到路径中。

添加:c:\MinGW\bin

您可能需要重新启动计算机以确保路径被所有进程正确使用。

另一个建议是使用不同的MinGW发行版。自从我使用“官方”的MinGW发行版以来,已经过了很长时间,因为安装步骤非常复杂和脆弱。我听说他们在安装程序上有了很大的进展,但从我听到的情况看,它仍然似乎相当复杂和脆弱。

TDM的安装程序非常好用,但我认为TDM版本还不够到4.7.2。

nuwen 发行版的安装只需解压缩档案到所需位置即可(我喜欢那个!),并确保路径指向gcc.exe的位置。Nuwen还打包了boost库,这很好。


如果有帮助的话,这是我从gcc -v hello.c得到的结果(c:\mingw.4.7.2\bin在路径中):

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=c:/mingw.4.7.2/bin/../libexec/gcc/i686-pc-mingw32/4.7.2/lto-wrapper.exe
Target: i686-pc-mingw32
Configured with: ../src/configure --prefix=/c/temp/gcc/dest --with-gmp=/c/temp/gcc/gmp --with-mpfr=/c/temp/gcc/mpfr --with-mpc=/c/temp/gcc/mpc --enable-languages=c,c++ --with-arch=i686 --with-tune=generic --disable-libstdcxx-pch --disable-nls --disable-shared --disable-sjlj-exceptions --disable-win32-registry --enable-checking=release --enable-lto
Thread model: win32
gcc version 4.7.2 (GCC) 
COLLECT_GCC_OPTIONS='-v' '-mtune=generic' '-march=i686'
 c:/mingw.4.7.2/bin/../libexec/gcc/i686-pc-mingw32/4.7.2/cc1.exe -quiet -v -iprefix c:\mingw.4.7.2\bin\../lib/gcc/i686-pc-mingw32/4.7.2/ hello.c -quiet -dumpbase hello.c -mtune=generic -march=i686 -auxbase hello -version -o C:\Users\mikeb\AppData\Local\Temp\cct1oltc.s
GNU C (GCC) version 4.7.2 (i686-pc-mingw32)
    compiled by GNU C version 4.7.2, GMP version 5.0.5, MPFR version 3.1.1-p2, MPC version 1.0.1
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "c:\mingw.4.7.2\bin\../lib/gcc/i686-pc-mingw32/4.7.2/../../../../i686-pc-mingw32/include"
ignoring duplicate directory "c:/mingw.4.7.2/lib/gcc/../../lib/gcc/i686-pc-mingw32/4.7.2/include"
ignoring nonexistent directory "c:/temp/gcc/dest/include"
ignoring nonexistent directory "/c/temp/gcc/dest/include"
ignoring duplicate directory "c:/mingw.4.7.2/lib/gcc/../../lib/gcc/i686-pc-mingw32/4.7.2/include-fixed"
ignoring nonexistent directory "c:/mingw.4.7.2/lib/gcc/../../lib/gcc/i686-pc-mingw32/4.7.2/../../../../i686-pc-mingw32/include"
ignoring nonexistent directory "/mingw/include"
#include "..." search starts here:
#include <...> search starts here:
 c:\mingw.4.7.2\bin\../lib/gcc/i686-pc-mingw32/4.7.2/include
 c:\mingw.4.7.2\bin\../lib/gcc/i686-pc-mingw32/4.7.2/../../../../include
 c:\mingw.4.7.2\bin\../lib/gcc/i686-pc-mingw32/4.7.2/include-fixed
End of search list.
GNU C (GCC) version 4.7.2 (i686-pc-mingw32)
    compiled by GNU C version 4.7.2, GMP version 5.0.5, MPFR version 3.1.1-p2, MPC version 1.0.1
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 8461a53e6fc78ff58191bda61fe9586d
COLLECT_GCC_OPTIONS='-v' '-mtune=generic' '-march=i686'
 as -v -o C:\Users\mikeb\AppData\Local\Temp\ccqRcYAj.o C:\Users\mikeb\AppData\Local\Temp\cct1oltc.s
GNU assembler version 2.22 (i686-pc-mingw32) using BFD version (GNU Binutils) 2.22
COMPILER_PATH=c:/mingw.4.7.2/bin/../libexec/gcc/i686-pc-mingw32/4.7.2/;c:/mingw.4.7.2/bin/../libexec/gcc/
LIBRARY_PATH=c:/mingw.4.7.2/bin/../lib/gcc/i686-pc-mingw32/4.7.2/;c:/mingw.4.7.2/bin/../lib/gcc/;c:/mingw.4.7.2/bin/../lib/gcc/i686-pc-mingw32/4.7.2/../../../
COLLECT_GCC_OPTIONS='-v' '-mtune=generic' '-march=i686'
 c:/mingw.4.7.2/bin/../libexec/gcc/i686-pc-mingw32/4.7.2/collect2.exe -Bdynamic c:/mingw.4.7.2/bin/../lib/gcc/i686-pc-mingw32/4.7.2/../../../crt2.o c:/mingw.4.7.2/bin/../lib/gcc/i686-pc-mingw32/4.7.2/crtbegin.o -Lc:/mingw.4.7.2/bin/../lib/gcc/i686-pc-mingw32/4.7.2 -Lc:/mingw.4.7.2/bin/../lib/gcc -Lc:/mingw.4.7.2/bin/../lib/gcc/i686-pc-mingw32/4.7.2/../../.. C:\Users\mikeb\AppData\Local\Temp\ccqRcYAj.o -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt c:/mingw.4.7.2/bin/../lib/gcc/i686-pc-mingw32/4.7.2/crtend.o

我已经在我的PATH中设置了c:\MinGW\bin。我会尝试不同的发行版,谢谢你的提示。 - eang
1
Nuwen发行版运行良好,谢谢。我认为这个问题已经解决了。顺便说一句,我希望mingw开发人员能够调试它。 - eang
TDM运行完美,安装也非常简单。非常感谢您的帮助。 - ApproachingDarknessFish
实际上,在我的情况下,你提到的路径必须在路径中,并且还要包括c:\MinGW\bin。添加带有版本号的路径解决了CreateProcess问题。 - Jostikas
Nuwen发行版解决方案运行无缝。它还有一个批处理文件,用于设置所有环境变量。 - shabby

1
我安装了官方网站的MinGW。
我选择了“基本设置”(我只想获取C编译器),并标记了所有包,在此安装后,我添加了路径,在我的情况下为:

C:\MinGW\bin。

我在以下位置创建了一个C文件:

C:\Users\christian\Documents\C projects\

文件名为untitled1.c
当我尝试使用以下命令时:

gcc untitled.c

命令提示显示了以下消息:

gcc:CreateProcess:没有那个文件或目录


我如何解决这个问题?
我删除了所有的包:

-打开“MinGW安装管理器”
-选择“基本设置”。
-标记要删除的所有包。
-选择“安装”选项卡。
-单击“应用更改”。
-之后您可以重新安装这些包。


操作系统

  • 版本:Windows 10专业版
  • 版本号:1607
  • OS构建版本:14393.187

1
我遇到了同样的错误。我使用64位win 7操作系统。首先安装了32位MinGW,gcc成功安装但仍显示此错误。尝试安装64位MinGW但未能成功安装。 搜寻了很多资料,尝试了很多方法,但都没有起作用。
最终从这个链接https://sourceforge.net/projects/tdm-gcc/?source=typ_redirect安装了"tdm64-gcc-5.1.0-2"。
它在一次尝试中成功安装并运行,没有任何错误。没有尝试过任何特殊的事情。
还有一个基本重要的点,在安装后需要将 "bin" 目录添加到环境路径中(在我的情况下是'C:\TDM-GCC-64\bin')。然后在控制台上使用此命令检查gcc安装情况: "gcc --version",这将显示已安装的gcc版本。

1
在我的情况下,我卸载了MinGW中的一些项目以节省SSD上的空间。安装mingw32-gcc dev类解决了我的问题。

1
我有同样的问题。
我的文件夹里有一个名为 startgcc.bat 的文件。 只需在我的 PATH 分配中去掉双引号即可正常运行。 我的批处理脚本:
@title gcc-mingw
@rem @cd /d %~dp0

@rem below line will fail and got error: gcc.exe: error: createprocess: no such file or directory
@rem @set path="C:\mingw64\bin";%path%

@rem below lines works ok without double quotation marks
@set path=C:\mingw64\bin;%path%
@set path=C:\mingw64\opt\bin\;%path%
@cmd

0
在我的情况下,当指定-flto时,去掉[=n]参数就解决了问题。
具体来说,不要使用
-flto=6

在 CFLAGS、CXXFLAGS 和 LDFLAGS 中,我现在只是简单地使用

-flto


看起来这是一个MinGW-w64的bug,但此时我不确定是否可能是由于我在调用make时使用了-j6参数引起的。

供以后参考,我的整个命令行如下:

mingw32-make -f makefile.gcc CFLAGS="-std=c11 -pipe -O3 -flto" CXXFLAGS="-std=c++14 -pipe -O3 -flto" LDFLAGS="-pipe -O3 -flto -static-libgcc -static-libstdc++ -s -Wl,--allow-multiple-definition" BUILD=release RUNTIME_LIBS=static DEBUG_FLAG=0 USE_AUI=0 USE_HTML=0 USE_MEDIA=0 USE_OPENGL=0 USE_PROPGRID=0 USE_QA=0 USE_RIBBON=0 USE_RICHTEXT=0 USE_STC=0 USE_WEBVIEW=0 USE_XRC=0 CFG="-stl-static_runtime-O3-flto" -j6

这是用于构建wxWidgets的“Minimal Sample”。关于 -Wl,--allow-multiple-definition :它旨在绕过另一个工具链错误。更多信息这里这里


0
在我的情况下,安装程序 mingw-get-setup.exe 无法下载一些文件,因此 gcc 编译工具链已经损坏。当重新运行 mingw-get-setup.exe 并获取丢失的文件时,问题就解决了。

0
在我的情况下,多个工具链将不同的gcc安装放入了PATH中。
(这正在变成一个开关!)

0

在我的情况下,

  • 我在系统和用户变量中都添加了\MinGW\bin
  • 还在系统和用户变量中添加了\MinGW\msys\2.0\usr\bin

做完这些后,我重新启动了电脑。它成功地工作了。我得到了msys make(Unix可移植)以及我的编译成功运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接