Linux 内核从诞生之初就注重跨平台可移植性,如今已支持数十种 CPU 架构。从桌面 PC 到智能手机,从嵌入式设备到超级计算机,Linux 几乎运行在所有主流架构上。理解 CPU 架构对于系统选型、交叉编译、性能调优和容器部署都至关重要。
指令集架构(Instruction Set Architecture, ISA) 是软件和硬件之间的契约,定义了 CPU 能理解的全部机器指令。它是最底层的软件抽象层。
| CISC | ||
| RISC |
CONFIG_32BIT | CONFIG_64BIT |
| 大端序(Big-Endian) | ||
| 小端序(Little-Endian) | ||
| 双端序(Bi-Endian) |
x86 是目前桌面和服务器领域占比最高的架构,由 Intel 于 1978 年推出(8086 处理器),经数十年的迭代演进至今。
⚠️ 64 位 x86 的标准名称是 AMD64(AMD 定义)或 x86-64。Intel 的叫法是 Intel 64(曾名 EM64T)。在 Linux 生态中统一称为
x86_64。
ARM(Acorn RISC Machine)是目前应用最广泛的 CPU 架构,以低功耗和高能效著称。智能手机、平板、嵌入式设备几乎全部采用 ARM。
在 Linux 生态中,32 位 ARM 常被称为
armhf(Hardware Float)或armel(Soft Float),64 位称为arm64或aarch64。
ARM 不直接生产芯片,而是授权 IP 给芯片厂商:
近年来 ARM 在服务器市场快速扩张:
RISC-V(读作"risk-five")是 2010 年由加州大学伯克利分校发起的开源免费指令集架构。与 ARM 和 x86 不同,任何人都可以免费使用 RISC-V 指令集设计芯片,无需支付授权费。
MIPS(Microprocessor without Interlocked Pipelined Stages)是一种经典的 RISC 架构,由 MIPS Computer Systems(1985)创造。曾广泛用于路由器、游戏机(PlayStation 1/2、N64)和嵌入式设备。
2021 年 Wave Computing(MIPS IP 持有者)宣布 MIPS 架构开源,但市场已大量转向 RISC-V。
MIPS 在 Linux 内核中仍被支持,但已逐渐边缘化。OpenWrt(路由器固件)是 MIPS 最活跃的应用场景之一。龙芯已从 MIPS 转向自主架构 LoongArch。
Power 架构由 IBM 开发,包括面向嵌入式/消费电子的 PowerPC 和面向企业服务器的 POWER 两大系列。
从 POWER8 开始,Linux 社区推动 little-endian(ppc64le) 作为默认字节序,使交叉编译和软件移植更加便利。
s390x 是 IBM 大型机(Mainframe)的 64 位架构。IBM Z 系列大型机是世界上最稳定、最安全的计算平台之一,用于金融交易处理、大型数据库和企业关键业务。
IBM Z 是少数直接在硬件上运行 Linux(而非 z/VM)的企业平台之一:
主要使用场景:
LoongArch 是龙芯中科自主研发的 CPU 指令集架构,于 2020 年正式发布,2021 年提交 Linux 内核补丁,2022 年被 Linux 内核正式接受。龙芯是中国自主研发 CPU 的重要代表。
| LoongArch | |||
| SPARC | ||
| IA-64(Itanium) | ||
| Alpha | ||
| HPPA(PA-RISC) | ||
| SH(SuperH) | ||
| ARC | ||
| Nios II / MicroBlaze | ||
| Hexagon | ||
| CSKY |
x86_64 | ||||||
arm64aarch64 | ||||||
armarmhf | ||||||
| 开源免费 | riscvriscv64 | |||||
mipsmips64 | ||||||
powerpcppc64le | ||||||
s390x | ||||||
loongarch64 | ||||||
sparc64 |
Linux 内核和工具链中,同一架构可能有多种命名方式:
x86_64 | x86_64-linux-gnu | amd64 | x86_64 | |
i386i686 | i686-linux-gnu | i386 | i386i686 | |
aarch64 | aarch64-linux-gnu | arm64 | aarch64 | |
arm | arm-linux-gnueabihf | armhf | armv7hl | |
riscv64 | riscv64-linux-gnu | riscv64 | riscv64 | |
mips64el | mips64el-linux-gnuabi64 | mips64el | mips64el | |
ppc64le | powerpc64le-linux-gnu | ppc64el | ppc64le | |
s390x | s390x-linux-gnu | s390x | s390x | |
loongarch64 | loongarch64-linux-gnu | loongarch64 | loongarch64 |
交叉编译(Cross Compilation)是在一个架构上编译出另一个架构可执行程序的过程。
<target>-<vendor>-<os>-<abi>
aarch64-linux-gnu-gcc | |
riscv64-linux-gnu-gcc | |
x86_64-w64-mingw32-gcc |
# Debian / Ubuntu
sudo apt install gcc-aarch64-linux-gnu
sudo apt install gcc-riscv64-linux-gnu
sudo apt install gcc-loongarch64-linux-gnu
# Fedora
sudo dnf install gcc-aarch64-linux-gnu
sudo dnf install gcc-cross-riscv64
# 简单 C 程序
cat > hello.c << 'EOF'
#include <stdio.h>
int main() {
printf("Hello from cross-compilation!\n");
return 0;
}
EOF
# 在 x86_64 上编译为 ARM64
aarch64-linux-gnu-gcc -static -o hello-arm64 hello.c
# 验证目标架构
file hello-arm64
# 输出:hello-arm64: ELF 64-bit LSB executable, ARM aarch64, version 1 (GNU/Linux 2.34), statically linked现代云原生环境中,同一个容器镜像可能需要同时运行在 x86_64 服务器和 ARM64 服务器上。Docker/OCI 通过 manifest 机制支持多架构镜像。
# 使用 buildx 构建多架构镜像
docker buildx create --use
docker buildx build --platform linux/amd64,linux/arm64 -t myapp:latest --push .
# 查看支持的架构
docker buildx inspect --bootstrap
# 使用 QEMU 模拟(性能较低,适合开发测试)
docker run --rm --platform linux/arm64 arm64v8/alpine uname -m
# 输出:aarch64
# 安装 QEMU 用户态模拟(通常 buildx 会自动配置)
sudo apt install qemu-user-static
alpine | |
ubuntu | |
debian | |
python | |
nginx |
# 最常用
uname -m
# 输出示例:
# x86_64
# aarch64
# riscv64
# loongarch64
# mips64el
# ppc64le
# s390x
# 查看完整硬件信息
lscpu
cat /proc/cpuinfo
# 查看 32/64 位支持
getconf LONG_BIT # 输出 32 或 64
file /bin/ls # ELF 64-bit ... 或 ELF 32-bit ...
# 查看 Linux 内核架构配置
zcat /proc/config.gz | grep CONFIG_64BIT # 压缩内核配置
# 或
grep CONFIG_64BIT /boot/config-$(uname -r) # 未压缩配置