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添加到我的系统路径
  2. 通过 mingw-get CLI 卸载并重新安装 gcc:

    mingw-get 删除 mingw32-gcc
    mingw-get 安装 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
4

8 回答 8

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.cc:\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
于 2012-11-10T21:36:01.067 回答
1

就我而言,我卸载了 MinGW 中的一些项目以节省 SSD 上的空间。安装 mingw32-gcc 开发类为我解决了这个问题。

于 2014-07-22T17:14:27.163 回答
1

我有同样的错误。我有 64 位 win 7 操作系统。首先我安装了 32 位 MinGW,gcc 安装成功但显示此错误。尝试安装 64 位 MinGW 但无法安装。搜索了很多,尝试了很多东西,但没有任何效果。

最后从这个链接安装“tdm64-gcc-5.1.0-2”>> https://sourceforge.net/projects/tdm-gcc/?source=typ_redirect

它在一次尝试中安装和工作,没有任何错误。没有什么特别的尝试。

最重要的一点是,安装后需要在 env 路径上添加“bin”目录(在我的例子中是“C:\TDM-GCC-64\bin”)。然后在控制台 >> "gcc --version" 上通过此命令检查 gcc 安装,这将显示已安装的 gcc 版本。

于 2016-08-02T12:09:49.740 回答
1

我安装了官网的MinGW 。
我选择“基本设置”(我只想要获取 c 编译器),并标记了所有包,在此安装之后,我添加了路径,就我而言。

C:\MinGW\bin。

我在中创建了 ac 文件

C:\Users\christian\Documents\C 项目\

名称为 untitled1.c

文我尝试使用命令

gcc untitled.c

命令提示符向我显示了该消息。

gcc:CreateProcess:没有这样的文件或目录


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

-打开“MinGW 安装管理器” -
选择“基本设置”。
- 标记删除所有包。
- 选择“安装”点击。
- 单击应用更改。
- 之后您可以再次安装它们。


操作系统

  • 版本:Windows 10 专业版
  • 版本:1607
  • 操作系统构建:14393.187
于 2016-09-27T23:15:00.473 回答
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
于 2017-11-23T03:16:47.087 回答
0

在我的情况下,安装程序mingw-get-setup.exe无法下载某些文件,因此 gcc 复杂工具链被破坏,当重新运行mingw-get-setup.exe并获取丢失的文件时,就可以了。

于 2014-07-22T11:52:26.847 回答
0

就我而言,多个工具链已将不同的 gcc 安装放入 PATH 中。

(这变成了开关!)

于 2016-05-21T14:50:35.017 回答
0

就我而言,在指定时去掉[=n]参数-flto解决了这个问题。

具体来说,而不是使用

-flto=6

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

-flto


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

为了将来参考,我的整个命令行如下:

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的“最小样本”。关于-Wl,--allow-multiple-definition:它旨在规避另一个工具链错误。更多信息在这里这里

于 2016-08-15T09:21:34.617 回答