2012-03-29 62 views
5

我收到以下错误用make(我有cygwin.dll)编译运8,cygwin的堆故障

*** Couldn't reserve space for cygwin's heap (0x150000) in child, cygheap, Win32 error 0 
      0 [main] make 4336 sync_with_child: child 2968(0x120) died before initialization with status code 0x1 
     308 [main] make 4336 sync_with_child: *** child state waiting for longjmp 

怎么可能解决呢? 感谢

+0

编译哪个程序?你好,世界? – karlphillip 2012-03-29 20:24:42

+1

没有,为什么它很重要?我有一个makefile,它在win7上工作正常。 – Yakov 2012-03-29 20:29:45

+0

如果不重要,我不会问这个问题。我试图确定这是一个随机问题,还是一直发生的事情,以及它是否可以用尽可能小的应用程序重现。你是否告诉我编译Hello World应用程序不会触发这个错误?你测试过了吗? – karlphillip 2012-03-29 20:38:47

回答

7
  • 重新引导系统:

大多数用户抱怨这个问题,报告说,它在重新启动后消失。如果您使用Windows 7,请查看BerndP的消息this thread,它提供了一些与调整Windows上的虚拟内存设置有关的提示。

  • 可能是一些软件Cygwin的干扰:

This post带来的使用Cygwin随机问题,一个有趣的讨论。 BLODA list列出了已知会导致Cygwin出现奇怪故障和问题的应用程序列表。

编辑

的Windows 8尚未正式发布,所以don't expect Cygwin to work on it

Cygwin可以运行在所有现代32位版本的Windows上这包括,在编写本文时,Windows 2000,Windows XP,Windows Server 2003,Windows Vista,Windows Server 2008,Windows 7以及发布的64位Windows版本(XP/2003/Vista/2008/7/2008 R2)上的WOW64 32位环境。

+1

是的,重新启动解决了我的Windows 8机器上的这个问题。我安装了16Gb的内存,并且可能与我的虚拟内存设置不同步... – 2013-07-15 09:38:54

+1

即使在Windows 8.1 64位计算机上使用32GB内存,重新启动也无济于事。虽然rebase修复工作。 – simich 2014-08-09 13:24:48

1

我正在使用eclipse,并在Windows 8上使用MinGW + Yagarto。重新启动时什么也没做。

我解决了这个问题,扩展了我的虚拟内存,最初设置为896Mb,并且不在3000Mb并且工作正常。

12

我刚刚遇到了这个问题,并建议重新绑定msys-1.0.dll导致问题。

具体来说,我用ReBase.exe工具:

C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\x64\ReBase.Exe 

这是微软的平台SDK available here的V7.1(也许还有其他版本)的一部分。

采取的dll的备份,然后尝试在平台SDK命令提示符中以下命令行:

rebase -b 0x30000000 /path/to/msys-1.0.dll 

解决这个问题对我来说。

感兴趣,我推荐的虚拟内存设置设置为3GB左右,实际分配的虚拟内存为6GB。

+0

这对我来说诀窍。非常感谢。 – ereOn 2013-09-13 06:44:29

+1

在我最终决定尝试重设修复之前,我曾经遇到这个问题很长一段时间。尽管我没有完全理解rebase地址的意义,但它起到了很好的作用。我在Windows 8.1 64位上输入了另一个。我使用了git自己的rebase,因为我没有安装Cygwin或类似软件。仅供参考,这里是我阅读有关修复的地方:http://jakob.engbloms.se/archives/1403。 – simich 2014-08-09 13:22:50

0

这个问题可以通过改变gcc的兼容模式来解决。exe文件(或任何通过make调用)到Windows XP中(属性 - >兼容性) 但是,脚本必须以管理员身份执行,以免在调用gcc.exe时多次确认。