在英特尔下,我知道我可以查看结果uname -m以了解我的操作系统是 32 位还是 64 位,但在 ARM 下,这给出了:
armv7l
Run Code Online (Sandbox Code Playgroud)
我从
file /usr/bin/ls
Run Code Online (Sandbox Code Playgroud)
我在 32 位操作系统上,但我如何以更简单的方式知道这一点?
我有一个 64 位(amd64 aka x86_64)Debian 或 Ubuntu 安装。我偶尔需要运行 32 位 (i386/i686) 程序,或者为 32 位系统编译程序。我怎样才能做到这一点,而不是大惊小怪?
奖励:如果我想使用较旧或较新版本的发行版运行或测试怎么办?
我正在下载 Lubuntu 的 ISO 映像;它们有两个版本:32 和 64。
但是为什么他们称 64 版本为amd64,因为他们说它也适用于英特尔?
我有一个在 64 位处理器上运行的 32 位系统。如何在不重新安装的情况下将其转换为全 64 位?我在某处看到它是可行的,因为新的 Multiarch 框架。
如何知道我的 CPU 是否支持 Linux 下的 64 位操作系统,例如:Ubuntu、Fedora?
在 Mac OS X 中,我可以使用 Activity Monitor 程序来查看正在运行的程序/进程是否为 64 位。无论风格如何,我如何在 Linux 操作系统中做到这一点?
我有两个 Ubuntu-x86_64 系统。一个是 10.04 版,另一个是 12.04 版,lib 目录的结构有所不同。这并不让我感到惊讶,但我很好奇是否有人知道为什么。有什么好的理由吗?
10.04
2.6.32-38-server #83-Ubuntu SMP Wed Jan 4 11:26:59 UTC 2012 x86_64 GNU/Linux
/usr/lib
/usr/lib32
/usr/lib64
Run Code Online (Sandbox Code Playgroud)
12.04
3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 GNU/Linux
/usr/lib
/usr/lib/x86_64-linux-gnu
Run Code Online (Sandbox Code Playgroud) 我糊涂了。运行 Fedora Linux,lscpu产生:
Architecture: i686
CPU op-mode(s): 32-bit, 64-bit
...
Run Code Online (Sandbox Code Playgroud)
但是当我尝试安装 64 位程序 (Chrome) 时,出现如下错误:
包 /....x86_64.rpm 具有不兼容的架构 x86_64。有效的架构是 ['i686', 'i586', 'i486', i386']
我对能够安装 Chrome 不太感兴趣,更感兴趣的是为什么lscpu说我的 CPU 可以在 64 位模式下运行;显然,这并不意味着我可以运行 64 位程序。任何人都可以澄清吗?
在 Linux/Unix 上如何处理向 64 位的过渡?Windows 世界似乎仍然存在问题,我很好奇它在 *nix 世界中是如何处理的。
给定 2.6.x 或更新的 Linux 内核和能够同时运行 ELF32 和 ELF64 二进制文件的现有用户空间(即过去我怎么知道我的 CPU 在 Linux 下支持 64 位操作系统?)我如何确定给定的进程( PID) 是在 32 位还是 64 位模式下运行?
天真的解决方案是运行:
file -L /proc/pid/exe | grep -o 'ELF ..-bit [LM]SB'
Run Code Online (Sandbox Code Playgroud)
但该信息是否直接暴露在/proc不依赖的情况下libmagic?