在软件开发中,“架构”(Architecture)通常指 CPU 指令集架构(ISA, Instruction Set Architecture),影响编译器生成什么样的机器代码、操作系统如何调度指令、程序如何组织内存结构等。以下是常见的架构及其说明:


1 常见架构名称对比

架构别名全称 / 正式名位宽厂商/平台说明
x86IA-3232Intel/AMD常见于 Windows 32 位系统
i386/i68680386 / 80686 系列32GNU/Linux 常用命名i686 为 32 位中较新版本
x64x86-64 的别称64通用别名(特别是 Windows)Windows 平台通常这样写
amd64AMD64 / x86-6464AMD 发起,Intel 支持Linux/GNU 工具链中常见
x86_64x86-6464GNU/Linux 常用通用 x64 架构
armARMv732移动设备/嵌入式系统旧款手机、树莓派 1/2、路由器等
arm64 / aarch64ARMv8+64Apple M1+/安卓新机Apple Silicon、ARM 服务器、安卓主流
riscv64RISC-V 64-bit64新兴开放架构Linux/嵌入式系统增长迅速
mipsMIPS32 / MIPS6432/64路由器/嵌入式系统旧嵌入式常见
wasm32WebAssembly 32-bit32浏览器/边缘计算目标是平台无关的运行时架构

2 x86 和 x64 关系说明

  • x86(有时等价于 i386/i686):指 32 位 Intel 架构(IA-32)

  • x64amd64x86_64:都是指 x86 的 64 位扩展版本(x86-64)

    • amd64 是 AMD 首创的 64 位扩展标准
    • x86_64 是 GNU/Linux 下的标准命名
    • x64 是微软的通俗名称

它们在本质上是一样的 ISA,只是命名不同。

3 32 位与 64 位的差异

特性32 位 (x86)64 位 (x86_64)
地址空间大小最大 4 GB理论上 16 EB(实际少得多)
寄存器数量更多的通用寄存器
寄存器位宽32 位64 位
数据吞吐能力低一些高,适合高性能场景
程序兼容性老软件兼容好老软件需通过兼容层
二进制兼容不兼容可在支持 x86 模拟器上运行

4 如何查看和选择架构(平台相关)

4.1.1 Windows 上

  • x86:32 位程序(Program Files (x86))

  • x64:64 位程序(Program Files)

  • 常见工具链标识:

    • x86-windows(vcpkg 中 32 位目标)
    • x64-windows(64 位目标)
    • x64-windows-static(静态链接)

4.1.2 Linux 上

  • 通过命令查看:

    uname -m          # 输出 x86_64, aarch64 等
    file my_binary    # 查看 ELF 的目标架构
    dpkg --print-architecture  # Debian/Ubuntu 系统架构

4.1.3 macOS 上

  • Intel 芯片:x86_64
  • Apple Silicon:arm64 / aarch64

5 在 CMake 中控制架构

使用 CMAKE_GENERATOR_PLATFORM 控制目标架构:

cmake -A x64 ..

或者设置 toolchain 文件:

set(CMAKE_SYSTEM_PROCESSOR x86_64)

6 在编译器中控制架构(MSVC/GCC/Clang)

6.1 MSVC:

  • /arch:IA32/arch:AVX2 控制指令集
  • -m32-m64 不适用,需选不同工具链(x86/x64)

6.2 GCC/Clang:

  • -m32:编译成 32 位
  • -m64:编译成 64 位
  • -march=native:使用本机 CPU 指令集