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

当我尝试在安装目录(E:\ MinGW \ bin)之外运行GCC时,出现此错误。

所以,假设我在E:\ code中,并有一个名为one.c的文件。 运行: gcc one.c -o one.exe会给我这个错误:

 gcc: CreateProcess: No such file or directory 

唯一的解决方法是导航到其安​​装目录,从那里运行gcc,并指定所有其他path。 我的环境variables“path”包含E:\MinGW\bin

任何build议来解决这个问题? 我正在运行Windows XP SP3。

它具体告诉你,你需要重新启动之后,你设置的窗口环境variables为migwin。

根据Code :: Blocks wiki ,你需要添加C:\MinGW\libexec\gcc\mingw32\MinGW-Version到你的PATH 。 不需要重新启动,但是您需要打开另一个terminal才能获得最新的PATH设置。

对于MinGW-w64,这是<mingw install directory>\libexec\gcc\x86_64-w64-mingw32\4.7.0\

我有一个类似的问题,由于没有安装C ++编译器。 在我的情况下,我正在为Python扩展编译.cpp文件,但编译器首先被调用为c:\ mingw \ bin \ gcc.exe。

在内部,gcc.exe会注意到它被要求编译一个.cpp文件。 它会尝试调用g ++。exe,并以相同的错误消息失败:

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

我刚刚有这个问题。

在我的情况下,这个问题是由于下载GCC包时出现问题。 mingw-get程序认为它完成了下载,但是没有。

我想升级GCC,所以我使用了mingw-get来获得更新的版本。 出于某种原因,mingw得到认为特定文件的下载已经完成,但事实并非如此。 当它提取文件,我想它发出了一个错误(我甚至没有打扰看 – 我只是跑了“mingw获取更新&& mingw-get安装mingw32-gcc”并将其留在那里)。

为了解决这个问题,我通过执行“mingw-get remove mingw32-gcc”来删除gcc,同时也删除了mingwcaching文件夹(“C:\ MinGW \ var \ cache \ mingw-get \ packages“),然后再次运行安装命令。 它下载并安装了GCC的缺失部分(它没有完全下载gcc-core软件包)。

这解决了我的问题。

有趣的是,即使在我删除了caching文件夹中的包文件之后,mingw-get也足够聪明地继续下载gcc-core,并且还移除了包mingw32-gcc。

我认为更根本的问题是,由于gcc核心文件没有安装,cc1不在那里。 而gcc使用cc1。 我想,当gcc试图启动cc1时,它使用CreateProcess传递cc1的path,而不是现有文件的path。 因此错误信息。

我有完全一样的问题。

在重新检查PATH ,我意识到我安装了Mingw (64位)和Cygwin (32位)。 问题是MingwCygwin都有g++

通过停用Cygwin的path,错误消失。

所以这是一个愚蠢的错误消息,因为它不告诉你它找不到什么文件。

使用详细标志gcc -v再次运行该命令,以查看gcc的最新进展。

在我的情况下,它发生了,它正试图调用cc1plus 。 我查过了,我没有。 安装了mingw的C ++编译器,然后我做了。

当试图从Cygwin运行链接到mingw安装时,得到相同的错误信息。

使用来自http://www.mingw.org/wiki/FAQ的mingw32-make-3.80.0-3.exe的相同安装以及WinXP SP3和gcc上的开始 – >程序 – > mingw shell选项正在工作精细。

我有这个相同的问题,没有build议的修复工作。 所以即使这是一个旧线程,我想我也可以发布我的解决scheme,以防别人通过Google发现此线程(就像我一样)。

对我来说,我不得不卸载MinGW /删除MinGW文件夹,然后重新安装。 重新安装后,它就像一个魅力。

所有🙂

这个问题是因为你使用大写的后缀stuff.C而不是小写的stuff.c当你使用Mingw GCC进行编译时。 例如,当你这样做:

 gcc -o stuff stuff.C 

那么你将得到消息: gcc:CreatProcess:没有这样的文件或目录

但是,如果你这样做:

  gcc -o stuff stuff.c 

那么它的工作。 我只是不知道为什么。

在“给男人一条鱼,喂他一天;教男人钓鱼,整个周末摆脱他”的静脉,

  g ++  - 帮助 

显示编译器选项。 g ++ -v选项有助于:

  -v显示编译器调用的程序 

查看输出的伪造path。 在我的情况下,原来的命令:

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

生成的输出包括这个小gem:

  -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 

我有一个很长的path,有一个文件在那里(而不是gcc.exe),但另一个文件,gcc.exe正在访问的path..

所以当我清理path,它的工作

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

所以从那里运行gcc肯定会运行ming gcc.exe

 C:\MinGW\bin>type file6.c #include<stdio.h> void main() { int num1,num2; scanf("%2d %4d",&num1,&num2); printf("a=%db=%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 

我的path很大

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

C:\ MinGW \ bin>path| grep -io“明”

那里没有鸣。

C:\ MinGW \ bin> echo MING | grep – “明”明

(是的,grep工作..path没有鸣在那里)

完全清除我的path,使它的工作!

 C:\MinGW\bin>set PATH= C:\MinGW\bin>gcc file6.c C:\MinGW\bin> 

所以,目前还不清楚导致冲突的PATH究竟是什么。 什么目录,什么文件。

最新情况:

以上对我来说似乎是正确的,但要补充一点,这也不是path冲突前一个简单的例子,因为通常当前目录是优先的。 在这里,gcc –version显示它正在运行,而不是冲突目录中的一个。 所以有一些有趣的事情发生,如果冲突的目录在path中),则必须执行。\ gcc或add . 到path的开始处,或者在path中任何冲突的目录之前添加c:\MinGW\bin 。 即使在C:\MinGW\bin也是如此,这很奇怪。 当它发生错误时,它仍在运行Ming的gcc,但是(出于某种原因)也查看了冲突的目录,就像我从进程监视器看到的一样。 这里可能有更多的答案http://wiki.codeblocks.org/index.php?title=Installing_MinGW_with_Vista在链接中提到的非常高效的答案在这里;

那是Ming32位..

望明64位,可能有同样的问题,但我看到,有趣的是,它有一个bat文件(明智地)实际上把bin目录放在path的挞。 看起来这是正确运行Ming gcc的标准方法。

code :: blocks IDE(合理)也将bin目录放在path的开始位置。 如果你运行一个显示环境variables的C程序,那么你可以看到。

我有同样的问题,但目前列出的解决scheme没有帮助第一次尝试。

-v选项没有给出任何额外的线索。

只好求助于ProcMon才能find问题的根源。

转储g++进程文件活动揭示了无数尝试在不同path上查找cc1plus可执行文件。 其中有老GCC版本的path。

但是,这个旧版本驻留在单独的文件夹中,并没有从我尝试运行的新版本引用。

最后在系统%PATH%环境variables中find了过时的path。 删除后,新版本开始工作没有错误。

E:\MinGW\bin添加到PATHvariables。

看起来MinGW有几个发行版本。 你试过哪一个? 为了logging,我遇到了与OP完全相同的问题,我得到的发行版是TDM-GCC 4.5.1。

我发现这里的MinGW发行版似乎工作得更好,并正确设置的东西。 因此,对于遇到这种“createprocess-no-such-file-or-directory”错误并且无法正常工作的人来说,卸载现有的MinGW并尝试使用我所链接的那个。

我有同样的问题(我正在运行cygwin)

通过cygwin.bat启动一个shell并没有帮助,但通过MingWShell启动一个shell。 不太清楚为什么,但我认为这与cygwin在执行脚本和底层文件系统之间放置的额外层有关。

我从一个虚拟环境的cygwin中运行pip安装来安装django sentry ..

对我来说,解决scheme很简单:

  1. 当你保存程序,让我们说它的名为hi.cpp把它放到文件夹,如xxl然后保存你的程序。

  2. 剪下这个文件夹并把它放到mingw的bin文件夹中。

  3. 当你拨打该节目时:

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

如果您有不同版本的程序,则可能会出现此问题。

例如,你有1年的gcc ,你想编译一个C ++源代码。 如果你使用mingw-get来安装g++gccg++会突然有不同的版本,你可能会发现自己处在这种情况下。

运行mingw-get updatemingw-get upgrade已经为我解决了这个问题。

(参考原始问题)
今天的版本(见postdate)
我所要做的就是在同一个shell中设置path,我运行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 

我遇到了类似的问题。 最初,将GCC bin文件夹添加到我的系统path不能解决问题。 我find了两个解决scheme

首先是运行我在MinGW安装的根目录mingwbuilds.bat中find的batch file。 它(显然)启动一个正确configuration的命令提示符来运行GCC。 第二个是删除我已经添加到我的用户pathvariables的GCC安装bin文件夹中的双引号。 我注意到这个batch file没有在安装binpath中使用双引号。

额外的细节

我在浏览安装文件夹树时偶然发现了这个batch file,这个文件夹试图find那些没有启动的可执行文件(根据-v输出)。 我在“注意事项”和“环境设置”部分find了有关MinGW wiki的一些信息, http://www.mingw.org/wiki/Getting_Started ,指出MinGW安装程序未设置系统或用户path以包含安装夹。 这似乎确认batch file是打算启动一个命令提示符适合从Windows提示符运行GCC。

我有同样的问题,我试过没有结果的一切,什么解决了我的问题是改变PATHvariables中库path的顺序。 我有cygwin以及其他一些编译器,所以他们之间可能会有某种碰撞。 我所做的是把C:\ MinGW \ bin; 在所有其他path之前首先path,并为我解决了这个问题!

尝试将path放入系统variables中,而不是将用户variables放入环境variables中。

我得到这个错误信息,因为我使用的是MinGW-w64,并且<install path>\bin的命令都有一个奇怪的前缀。 我试图在“目标别名”目录中调用可执行文件,而不是在<install path>\bin目录中,这导致了更多的问题。 根据常见问题解答,这是一个禁忌 。 那么我的解决scheme就是创build所有前缀命令的符号链接。 我打开了一个提升的命令提示符,并为每个可执行文件使用mklink gcc.exe x86_64-w64-mingw32-gcc.exe ,现在我的构build工作。

虽然post老了,但在2015/02/13上,我和mingw32版本4.8.1有同样的问题。 使用Eclipse CDT进行编译失败,并显示此消息。 从命令行尝试使用-v选项也失败。 我也错过了cc1plus可执行文件。

原因:我从mingw32站点下载了命令行和graphics安装程序。 我用这个来做我最初安装的mingw32。 使用GUI,我select了基本工具,select了c和c ++编译器。

这个安装程序没有完成32位c ++编译器的安装。 我有g ++和cpp文件,但没有cc1plus可执行文件。 试图做一个“更新”失败,因为安装程序假定我已经安装了一切。

修复我发现这些网站: http : //mingw-w64.sourceforge.net/ http://sourceforge.net/projects/mingw-w64/我下载并运行这个“在线安装”。; 果然这个包含了丢失的文件。 我修改了我的PATHvariables,并指向包含g ++可执行文件的“bin”文件夹。 重新启动。 安装了64位Eclipse。 打开Eclipse和“Hello World”c ++程序,编译,执行和正确debugging。

注意:64位安装程序似乎默认为UNIX设置。 为什么安装程序无法确定操作系统? 确保改变它们。

我花了整整一个晚上处理这个。 希望这有助于某人。

我有同样的问题。

我已经通过MinGW(包mingw32-gcc-g ++ )安装了g ++编译器,但是我需要一个C编译器,所以我运行了mingw-get-setup.exe,在那里我可以安装mingw32-base包,用C编译器。

唉! 我使用gcc编译时遇到了这个错误:

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

我所做的是,仍然使用MinGW安装pipe理器,我删除了C和C ++编译器软件包,即mingw32-basemingw32-gcc-g ++ ,并且删除了C:\ MinGW目录本身。 然后我reran mingw-get-setup.exe,安装了mingw32-base ,瞧,它工作:)