如何确定我的cygwin安装是32位还是64位?

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

user18099 asked 2020-08-11T22:11:51Z
4个解决方案
51 votes

x86_64

如果是64位,则应在输出中说x86_64,如果是32位,则应说i686

DBedrenko answered 2020-08-11T22:11:57Z
21 votes

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

theDrake answered 2020-08-11T22:12:17Z
7 votes

其他答案解决了OP的问题,但是,如果您像我一样,同时使用Cygwin的两种版本,那么不仅要运行setup.exe,还可以知道要使用的是Cygwin。 如果我知道我的脚本在Cygwin上运行,我更喜欢

uname -m

因为它只给我输出“ x86_64”或“ i686”。 我可以在“ if”块中使用它,如下所示:

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

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

NateT answered 2020-08-11T22:12:47Z
2 votes

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月左右以来,字符串中的WOW64已更改为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
Nick Westgate answered 2020-08-11T22:13:20Z
translate from https://stackoverflow.com:/questions/22687184/how-do-i-tell-whether-my-cygwin-installation-is-32-or-64-bit