make:捕获到中断/异常


33

我正在使用MinGW发行版中的Make。它一直都有效,但是最近我遇到了以下错误:

> make clean
make: Interrupt/Exception caught (code = 0xc0000005, addr = 0x0040b0ac)

各个部分如下所示:

clean:
    del /S /Q *.o > nul
    del /S /Q *.cy.c > nul
    del /S /Q *.pyc > nul
    del /S /Q *.pyo > nul
    if EXIST build (rmdir /S /Q dist > nul)

我不知道是什么原因造成的。特别是因为它一直都运行良好。


1
您是否尝试过更新品牌?gnu.org/software/make –FabiánHeredia
Montiel

Answers:


46

我也开始例外:

make: Interrupt/Exception caught (code = 0xc00000fd, addr = 0x4227d3)

可能是不同的原因,但是当PATH变量包含圆括号时(,显然会引起此问题),就像在Win Vista / 7上一样。不幸的是,Windows可用的GNU已经过时了。

我的问题已通过强制make使用正确的外壳而得到解决:在makefile的开头插入以下行。

SHELL=C:/Windows/System32/cmd.exe

很好的解决方案,但是我不知道为什么它不起作用,我的环境变量中没有括号
forsubhi 2014年

1
可能也与PATH的长度有关吗?就我而言,我的PATH已经有很多括号而没有任何问题(直到我安装了更多东西);替换的所有实例C:\Program FilesC:\PROGRA~1C:\Program Files (x86)C:\PROGRA~2固定我的问题。+1 :-)
卡梅伦

我也有这个问题,而改用化妆的较新版本:equation.com/servlet/equation.cmd?fa=make -这并没有解决问题,但它处理异常好,告诉你发生了什么:sh: C:\Program: No such file or directory是如果我不传递SHELL变量,则会得到第一行。基本上,PATH上“程序文件”的每个实例都包含一个不能正确转义的空间(就make而言)。不是路径的长度,而是引起此问题的空格。这解释了为什么使用不带空格的宏将其固定。
约翰内斯

这个解决方案对我有用。
罗伯特·斯蒂夫勒

8

当我将Git的bin目录添加到PATH环境变量中时遇到了这个问题。原因似乎是Git附带了MSYS版本,并且似乎与MinGW冲突(也许当它是MSYS和/或MinGW的正确版本时不冲突,但这只是猜测)。

因此,请确保您的中没有(其他)MSYS发行版PATH


1
我的问题是bin目录的Git路径!做得好 !
TridenT 2014年

3

对于Norbet P.的答案,我发现添加:

PATH=

在我的Makefile顶部,为我解决了这个特殊问题。


1
我没有给出-1,但这是一个非常糟糕的答案。您不能只重置PATH !!!这是非常不好的做法!有时程序编译取决于PATH中的信息。
量子物理学家2015年


2

我使用了GnuWin,直到我意识到最后一个版本发布于2006年11 26日。那有点la脚,并导致了如上所述的问题。设置SHELL = C:/Windows/System32/cmd.exe确实解决了一些问题,但是在新的操作系统上运行这样的旧代码感到不安全

MinGw是一个更安全的选择。MinGw是Windows的Minimallist GNU的缩写,并且是最新的,包括make和其他工具

http://sourceforge.net/projects/mingw/files/


1
你甚至读过这个问题吗?
orlp

1

Windows错误代码0xC0000005表示访问冲突或分段错误。

  • 您的MinGW安装是否已损坏?
  • 系统配置正确吗?最近是否更改了系统设置?
  • 您的系统上是否存在硬件问题?您可能需要使用CHKDSK扫描硬盘驱动器或执行诸如Memtest86 +之类的内存测试。

-1

我在编译日志中注意到,即使我在Windows平台上,也正在传递“ SHELL = sh”来进行制作。我的Makfile看起来像这样:

ifneq(,$(findstring win,$(RDI_PLATFORM)))SHELL = CMD endif

一旦我评论了ifneq并结束了它的工作。不知道为什么平台解释不正确。


1
不是原始问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论-您可以随时对自己的帖子发表评论,一旦您拥有足够的声誉,就可以在任何帖子中发表评论
DavidPostill
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.