【转】 Cygwin的编译错误

解决Cygwin中的“died waiting for dll loading”错误

在Cygwin中开发Rails,有时候需要执行SH命令,而这些命令调用DLL时经常会遇到类似的错误提示:

 [main] ruby 4208 C:/cygwin/bin/ruby.exe: *** fatal error - unable to remap C:/cygwin/bin/cygssl-0.9.8.dll to

same address as parent(0×340000) != 0×4730000

 [main] ruby 1752 fork: child 4208 - died waiting for dll loading, errno 11

具体原因不大清楚,解决方法如下:

CMD到Cygwin的bin路径下,执行ash命令,或者直接run这个命令;

在ash提示符后面运行/bin/rebaseall,注意要输入完整,如果只输入rebaseall,会提示找不到这个命令,而且这个命令只能在ash下面执行,不能在Cygwin下面执行。

现在打开Cygwin,应该一切正常了。

 

源文档  

 

 

Vista Cygwin 1.7 编译Skyeye失败

2009-06-04 21:35

      3 [main] perl 2416 D:/cygwin/bin/perl.exe: *** fatal error - unable to rem

ap //?/D:/cygwin/lib/perl5/5.10/i686-cygwin/auto/File/Glob/Glob.dll to same addr

ess as parent(0x1550000) != 0x1670000

> See this thread:

http://www.nabble.com/Perl-5.10-on-a-fresh-install-reports-unable-to-remap-Glob.dll-to18365374.html#a18365374

That's a common problem for non-XP 32-bit systems with perl5 

You need to install the rebase package, and run rebaseall from ash. 

ash 

/usr/bin/rebaseall 

/usr/bin/peflagsall /bin/peflagsall

Cygwin/Perl Fatal Error under Vista 

Vista 的诡异

Cygwin (1.7.30) 与 Vista 不太兼容,运行 Perl 程序或 CPAN 更新时会出现大量的 remapping 错误:

 

6292236 [main] perl 4588 X:/cygwin/bin/perl.exe: *** fatal error - unable to

> remap X:/cygwin/lib/perl5/5.10/i686-cygwin/auto/File/Glob/Glob.dll to same

> address as parent(0x860000) != 0x14E0000

 

网上有不少相关的解决方法,主要是围绕 rebaseall 这个实用程序,即 Vista 的系统 DLL 可能和 Cygwin 的 DLL 映像基址有冲突(PE 的基址不是可重定向的嘛,也不知道是 Vista 的诡异还是 Cygwin/Perl 没有处理好这个问题,也可能是 cygwin 的 fork() 实现有问题,导致fork出来的进程必须和父进程共享同一个内存布局),总之用 rebaseall -b 0xXXXXXXXX ,从 0x40000000 到 0xA0000000都试遍了,就是不成功。后来我改了 -o 参数,原先默认是 0x10000,改成 0x100000 后就通过了,但不能对所有 DLL 都用这么大的偏移量,32位虚地址很快就会用光,所以我只对 lib/perl5/*.dll 应用了大偏移,如果仅针对 perl 的相关DLL,偏移可以用 0x20000, 即

 

find /usr/lib/perl5 -iname *.dll >>FILES.LST

rebase -vdb 0x70000000 -o 0x20000 -T FILES.LST

 

这样处理了之后就能用CPAN添加PERL模块了。

/usr/bin/autoconf-2.63: line 155: 4568 Segmentation fault      (core dumped) ex

pr a : '/(a/)' > /dev/null 2>&1

      2 [main] expr 6052 _cygtls::handle_exceptions: Error while dumping state (

probably corrupted stack)

 

源文档  

你可能感兴趣的:(Android)