【问题标题】:How do I tell whether my cygwin installation is 32 or 64 bit?如何判断我的 cygwin 安装是 32 位还是 64 位?
【发布时间】:2014-05-06 09:37:26
【问题描述】:

如何判断我的 cygwin 安装是 32 位还是 64 位? 我不记得要下载哪个 setup.exe。而且我不想弄乱我的 cygwin 安装。

【问题讨论】:

标签: cygwin


【解决方案1】:

uname -m

如果它是 64 位,它应该在输出中显示 x86_64,如果是 32 位,它应该在输出中显示 i686

【讨论】:

    【解决方案2】:

    运行uname -m。如果您的 cygwin 安装是 64 位,则输出将为 x86_64。如果是 32 位,您将看到 i386i486i586i686

    【讨论】:

      【解决方案3】:

      其他答案解决了 OP 的问题,但如果您像我一样使用 Cygwin 的两种风格,那么了解您使用的不仅仅是运行 setup.exe 会很有用。如果我知道我的脚本在 Cygwin 上运行,我更喜欢

      uname -m
      

      因为它只给我“x86_64”或“i686”作为输出。我可以在这样的“if”块中使用它:

      if [ $(uname -m) == "x86_64" ]; then do something; fi
      

      当然,您也可以在 if 语句中使用“uname -a”和“grep”。这是个人喜好问题。

      【讨论】:

        【解决方案4】:

        NateT根据“uname --help”给出正确的命令“打印机器硬件名称”:

        uname -m
        

        我得到“x86_64”或“i686”,但谁知道这些字符串是否会改变?这是“uname -a”的全部输出。 WOW64 告诉您它是 64 位 Windows 上的 32 位 Cygwin。在 32 位上你别无选择,对吧? ; - )

        $ uname -a
        CYGWIN_NT-6.1-WOW64 Pegasus 1.7.32(0.274/5/3) 2014-08-13 23:03 i686 Cygwin
        

        更新:(感谢 theDrake。)具有讽刺意味的是,自 2015 年 2 月左右the WOW64 in the string has changed to WOW 以来,虽然现在检查 WOW 可能是安全的,但“机器硬件名称”似乎确实比“内核名称”。

        根据该线程,Cygwin 似乎确实认真对待向后兼容性,但还要注意,在 MSYS2 下,无论如何您都需要依赖“机器硬件名称”而不是“内核名称”:

        $ uname -a
        MSYS_NT-6.1 Pegasus 2.5.0(0.295/5/3) 2016-03-15 11:29 x86_64 Msys
        

        【讨论】:

        • 使用我当前的设置,32 位 Cygwin 在 64 位 Windows 10 环境中运行 uname -a 显示 CYGWIN_NT-10.0-WOW 没有“64”(输出以 i686 Cygwin 结尾,就像在你的例子中)。所以,也许你的解释不太正确?我想知道这种差异是从哪里来的。
        • 哈,我没想到 WOW64 字符串会改变,但这就是他们这样做的原因:cygwin.com/ml/cygwin/2015-02/msg00938.html
        • 感谢您的发现!可惜他们不得不做出如此令人困惑的改变。
        • 是的,它显示“内核”名称非常随意。再说一次,我注意到你在上面列出了很多“机器硬件名称”的值,我怀疑有一天 ARM (32, 64) 等会被添加到列表中。
        猜你喜欢
        • 2018-01-21
        • 2014-11-27
        • 2013-01-11
        • 2018-06-14
        • 2014-12-24
        • 1970-01-01
        • 1970-01-01
        • 2011-07-03
        • 1970-01-01
        相关资源
        最近更新 更多