我使用的是Windows 10。
我从https://cygwin.com/install.html下载了setup-x86_64.exe并选择了默认值(从Internet / Direct Connection /默认位置安装)。
我尝试了几个镜像,包括cygwin.mirror.constant.com
我接受所有默认包以及一些基本的开发人员(gdb,make)并选中“Select required packages(RECOMMENDED)”。
我通过Cygwin安装程序得到了很多方法,然后获得了许多弹出消息中的第一个“IO错误打开文件....._ autorebase / binutils / cygwin / grep / mintty等等。你想跳过这个包吗?”
如果我跳过这些包,我会得到一个不工作的Cygwin安装(它找不到薄荷)。如果我没有跳过这些包,那么当Cygwin安装程序到达第一个问题包时挂起它就会挂起。
在此先感谢我缺少的设置过程的哪一部分。
有点晚了,但无论如何:昨天我第一次尝试在Windows 10上安装Cygwin时遇到了同样的问题。
我已经按照各个站点(包括这个)给出的所有建议:禁用防病毒软件,跟随the Cygwin FAQ,等等,但无济于事。
然后我研究了设置日志,发现了一条告诉我地址不匹配的信息(对不起,我没有确切的措辞 - 我肯定不会重复实验......)。这让我想到它可能与ASLR(一种加强系统抵御恶意软件的技术)有关。
下一步是通过Windows Defender的UI关闭ASLR。完成之后,我可以毫无问题地安装Cygwin。当我再次打开ASLR时,我还没有测试过我是否真的可以使用Cygwin;将它完全关闭后我感觉不舒服。
另一种方法是关闭每个可执行文件的ASLR。这也可以在Windows Defender的UI中实现。但这可能意味着添加了几十个异常,具体取决于您安装的Cygwin软件包的数量。
问题的技术原因是POSIX's
fork()
的工作原理。基本上,它使用相同的偏移地址克隆父进程的图像。但是当ASLR处于活动状态时,克隆过程时这些偏移量会发生变化,这会使fork()
失败。由于qgxswpoi被Cygwin广泛使用,因此当ASLR处于活动状态时,它无法按预期运行。