Answers:
尝试uname -m
。缺少uname --machine
它并输出:
x86_64 ==> 64-bit kernel
i686 ==> 32-bit kernel
否则,请键入以下内容,而不是Linux内核,而是CPU:
cat /proc/cpuinfo
要么:
grep flags /proc/cpuinfo
在“标志”参数下,您将看到各种值:请参阅“ / proc / cpuinfo中的标志是什么意思? ”其中一个名为lm
:Long Mode
(x86-64:amd64,也称为Intel 64,即64位能)
lm ==> 64-bit processor
或使用lshw
(如下面萨克森州的罗尔夫(Rolf of Saxony)所述),但不使用sudo
(仅用于gpu cpu宽度):
lshw -class cpu|grep "^ width"|uniq|awk '{print $2}'
注意:您可以安装具有32位内核的64位CPU。
(正如ysdx在他/她自己的回答中提到的:“现在,系统可以是多体系结构,因此无论如何它都没有意义。您可能想找到编译器的默认目标”)
uname -i
,uname -p
并uname -m
说明了什么?
uname -m
输出x86_64
getconf LONG_BIT
输出32
哪一个正确?:\
uname -m
对QP的是没有用的configure
,因为它可以给错误的结果。在getconf LONG_BIT
获得C库这可能不是指定的,由正确大小的默认位大小CC
,编译器。
getconf LONG_BIT
可以提供32 ig,它已被构建为32位应用程序(通常是运行32位用户区的64位内核)。
lscpu
将列出有关CPU的其他信息:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
...
另一个易于确定的有用命令如下:
命令:
getconf LONG_BIT
回答:
命令
$ arch
相当于
$ uname -m
但打字速度快一倍
我想知道专门用于在Debian中构建软件的问题(已安装的Debian系统可以是具有32位内核,库等的32位版本,也可以是具有为64-位而不是32位兼容模式)。
Debian软件包本身(当然)在使用其所有元数据(包括平台体系结构)实际创建软件包时需要知道它们的架构(当然),因此有一个打包工具可以将其输出供其他打包工具和脚本使用,称为dpkg-architecture。它包括其配置要构建的内容以及当前主机。(尽管通常这些都是一样的。)在64位计算机上的示例输出:
DEB_BUILD_ARCH=amd64
DEB_BUILD_ARCH_OS=linux
DEB_BUILD_ARCH_CPU=amd64
DEB_BUILD_GNU_CPU=x86_64
DEB_BUILD_GNU_SYSTEM=linux-gnu
DEB_BUILD_GNU_TYPE=x86_64-linux-gnu
DEB_HOST_ARCH=amd64
DEB_HOST_ARCH_OS=linux
DEB_HOST_ARCH_CPU=amd64
DEB_HOST_GNU_CPU=x86_64
DEB_HOST_GNU_SYSTEM=linux-gnu
DEB_HOST_GNU_TYPE=x86_64-linux-gnu
您可以仅打印这些变量之一,也可以使用dpkg的命令行选项对其值进行测试 -architecture的。
我不知道dpkg-architecture如何推论该体系结构,但是您可以查看其文档或源代码(dpkg-architecture和许多dpkg系统通常都是Perl)。
dpkg --architecture
获得主机系统架构,而无需dpkg-dev
安装软件包。
dpkg: error: unknown option --architecture
14.04的dpkg 1.17.5ubuntu。dpkg-architecture(安装了dpkg-dev)可以正常工作。
dpkg --print-architecture
从一开始就在Debian上起作用。这是可行的,但仅限于Debian及其衍生版本。
#include <stdio.h>
int main(void)
{
printf("%d\n", __WORDSIZE);
return 0;
}
如果您使用的是64位操作系统(而不是i686),则在x86_64
或ia64
的输出中uname -a
。因为您没有这两个字符串中的任何一个。您有32位操作系统(请注意,这并不意味着您的CPU不是64位)。
uname
输出中还有其他值指示64位OS。并非全世界都是x86或Itanium ...
该系统是32位的。iX86 uname
意味着它是32位体系结构。如果是64位,它将返回
Linux mars 2.6.9-67.0.15.ELsmp #1 SMP Tue Apr 22 13:50:33 EDT 2008 x86_64 i686 x86_64 x86_64 GNU/Linux
如今,系统可以是多体系结构,因此无论如何都没有意义。您可能想要找到编译器的默认目标:
$ cc -v 2>&1 | grep ^目标 目标:x86_64-pc-linux-gn
您可以尝试编译一个hello world:
$ echo'int main(){返回0; }'| cc -xc--o foo $ file foo foo:ELF 64位LSB可执行文件,x86-64,版本1(SYSV),动态链接,解释器/lib64/ld-linux-x86-64.so.2,用于GNU / Linux 2.6.32,BuildID [sha1] = b114e029a08abfb3c98db93d3dcdb7435b5bba0c,未剥离
cc -v | grep …
无论如何都是特定于编译器的,因此只能使用cc -dumpmachine
,而无需grepping且不仅受GCC支持。
我编写了一个简单的函数来在“ C”中执行此操作:
/*
* check_os_64bit
*
* Returns integer:
* 1 = it is a 64-bit OS
* 0 = it is NOT a 64-bit OS (probably 32-bit)
* < 0 = failure
* -1 = popen failed
* -2 = fgets failed
*
* **WARNING**
* Be CAREFUL! Just testing for a boolean return may not cut it
* with this (trivial) implementation! (Think of when it fails,
* returning -ve; this could be seen as non-zero & therefore true!)
* Suggestions?
*/
static int check_os_64bit(void)
{
FILE *fp=NULL;
char cb64[3];
fp = popen ("getconf LONG_BIT", "r");
if (!fp)
return -1;
if (!fgets(cb64, 3, fp))
return -2;
if (!strncmp (cb64, "64", 3)) {
return 1;
}
else {
return 0;
}
}
好主意,“ getconf”!
CHAR_BIT*sizeof(void*)
或__WORDSIZE
在C.
fgets
:stackoverflow.com/questions/16323185/...
您还可以使用环境变量进行检查:
echo $HOSTTYPE
结果:
i386
-> 32位
x86_64
-> 64位
摘自:http : //www.sysadmit.com/2016/02/linux-como-saber-si-es-32-o-64-bits.html
/bin/bash
它不是环境变量。如果您已经依赖Bash,则可以正常工作。然而,其结果可能是i386
,i486
,i586
,i686
和其他人,所以要小心。
在Bash中,使用整数溢出:
if ((1 == 1<<32)); then
echo 32bits
else
echo 64bits
fi
这比调用另一个进程或打开文件要有效得多。
如果将1左移32,则得到1,则系统为32位。如果将1左移64,则得到1,则系统为64位。
换一种说法,
if echo $((1<<32)) gives 1 then your system is 32 bit
。
if echo $((1<<64)) gives 1 then your system is 64 bit
。
如果一个人的可用二进制文件严重受限(例如initramfs),我的同事建议:
$ ls -l /lib*/ld-linux*.so.2
在我的ALT Linux系统上,i586具有/lib/ld-linux.so.2
和x86_64具有/lib64/ld-linux-x86-64.so.2
。
$ grep "CONFIG_64" /lib/modules/*/build/.config
# CONFIG_64BIT is not set
简单脚本获取64位或32位
if $(getconf LONG_BIT | grep '64'); then
echo "64 bit system"
else
echo "32 bit system"
fi
首先,您必须下载Virtual Box。然后选择新的和32位Linux。然后使用它启动Linux。如果启动,则为32位;如果不启动,则为64位。