ein*_*ica 58 64-bit cygwin transitions 32bit-64bit windows-7-x64
我一直在使用Cygwin(很长一段时间).具体来说,我在Win7上使用它(包括gcc/g ++)进行开发工作.我刚才注意到现在存在一个64位版本.
我没有特定需要,需要我转换到64位,但我想知道是否要这样做.这是可取的吗?优缺点都有什么?在进行转换时是否存在已知的过度电弧问题?
War*_*ung 89
曾几何时,64位Cygwin缺少32位Cygwin中的许多软件包,但今天这些软件包的列表很短.由于这是在64位Windows系统上创建新的32位Cygwin安装的最后一个重要原因,因此您今天不太可能有充分的理由这样做.
使用64位Cygwin的最大优点是可以访问更大的内存.优势有两种截然不同的方式:
许多Cygwin程序将使用尽可能多的RAM.
例如,如果您使用具有大型数据集的Cygwin版本的R,则应该切换到64位Cygwin ASAP,因为R想要将整个数据集加载到RAM中,因此在64位上使用32位Cygwin机器人为地限制了R在Cygwin下可以完成的任务.
Cygwin在面对fork()调用时处理DLL的方式要求将它们加载到固定的内存地址.
(这是rebase机制,通常在Cygwin的每次运行结束时自动运行setup.exe.)
这样做的一个结果是,在32位Cygwin中可以安装这么多rebase用尽地址空间的软件包,试图为它们提供所有唯一的加载地址.对于所有实际目的,64位地址空间的指数级大小现在消除了这种可能性.
在某些情况下,64位Cygwin也可以更快一些.
您可以同时安装和运行两个版本的Cygwin.您甚至可以同时为每个窗口创建一个MinTTY窗口.然而,最好将它们视为单独的世界,因为两个Cygwins 从根本上是不相容的.如果您尝试让它们进行互操作,您将遇到麻烦.
这种基本的不兼容性可能会在几个方面让你感到困惑:
即使64位Cygwin程序可以启动32位Cygwin程序,反之亦然,但是几个跨进程机制无法跨越该边界:POSIX共享内存,文件句柄传递,getppid(2)...
当你试图使两个不同的Cygwins互操作时,甚至一些你不认为是跨进程的东西也会失败./proc例如,Cygwin的大部分内容来自DLL中,因此两个Cygwins之间的内容会有所不同,即使它们在同一台机器上同时运行.
假设您想/usr/local在Cygwins之间共享,那么您不必拥有从源代码构建的所有软件的两个副本.
阅读完上面的第一项后,您会发现无法分享/usr/local/bin或/usr/local/lib.
在考虑之后,您决定只想分享,/usr/local/src这样您至少不必拥有重复的源树.如果你在源代码树中构建任何这些程序,你仍然会遇到问题,这是典型的.(即./configure && make && make install)
出现这种情况有两个原因:
生成的二进制文件(*.o,*.so,*.a,*.exe...)将两个Cygwins之间不兼容的,所以除非你make cleanCygwins之间切换时,他们会被抛在后面,造成混乱.
即使你记得make clean,./configure每个Cygwin下的输出可能会有所不同,所以试图在64位Cygwin下构建一个在32位Cygwin下配置的程序(反之亦然)可能会失败.
这个陷阱有几种方法:
也放弃分享/usr/local/src.
记得make clean && ./configure每当你切换Cygwins时.
构建打造出的树分别为每个Cygwin的变种.
这比以前的选项更清晰,更快速,更可靠,但并非所有源树都设置为允许这样做.
如果您没有充分的理由忍受这些问题,请安装一个版本或另一个版本,而不是两者.
如果你有一个功能正常的32位Cygwin设置并且不需要64位Cygwin的好处,你不必觉得必须用64位安装替换它.32位Cygwin不会很快消失.
同时,如果我正在设置一个新的64位Windows机箱,我会在其上安装64位Cygwin,除非我事先知道它没有我需要的移植包,我不是愿意自己做这个港口.它很稳定,而且大部分都是完整的.
Cygwin的联合首席开发人员Corinna Vinschen 已经说过以下内容,作为Cygwin 1.7.25发行版的一部分:
关于64位释放
这只是Cygwin发布的第四个官方版本,可以作为AMD64 Windows系统的64位版本公开发布,所以它仍然很新.
现在,64位Cygwin发行版没有32位版本的软件包,但它与32位版本一样稳定,并且随着时间推移会有更多的软件包.
如果您已在64位Windows计算机上运行32位版本的Cygwin,则可以继续这样做.如果您计划在64位Windows计算机上安装新的Cygwin,请考虑使用新的64位Cygwin版本,除非您需要64位版本中尚未提供的某些软件包.
“升级”到 64 位的另一个问题是,AFAIK 没有一种方法可以自动重新安装您在 32 位安装中拥有的相同软件包列表,因此您必须煞费苦心地制作一个列表安装的软件包,并在新安装中煞费苦心地检查它们,只是为了回到重新安装之前的位置。
| 归档时间: |
|
| 查看次数: |
33159 次 |
| 最近记录: |