上位机知识篇---四种CPU架构&交叉编译


文章目录

  • 前言
  • 一、四种 CPU 架构
    • 1. x86/x86_64
      • 指令集
      • 位宽:
      • 应用场景
      • 编译工具
    • 2. ARM
      • 指令集
      • 位宽:
      • 应用场景
      • 编译工具
    • 3. MIPS
      • 指令集
      • 位宽
      • 应用场景
      • 编译工具
    • 4. RISC-V
      • 指令集
      • 位宽
      • 应用场景
      • 编译工具
  • 二、交叉编译
    • 1. 什么是交叉编译?
      • 定义
      • 应用场景
    • 2. 交叉编译工具链
    • 3. 交叉编译步骤
      • (1) 安装工具链
      • (2) 编写代码
      • (3) 交叉编译
      • (4) 验证可执行文件
    • 4. 运行交叉编译的程序
  • 三、总结


前言

本文简单介绍了一下,目前常见的四种CPU架构和交叉编译。
通过交叉编译工具链,开发者可以在一种架构的机器上为其他架构生成可执行文件,极大提高了开发效率。


一、四种 CPU 架构

1. x86/x86_64

指令集

指令集:CISC(复杂指令集)。

位宽:

x86:32 位。
x86_64:64 位(兼容 32 位)。

应用场景

应用场景:PC、服务器、高性能计算

编译工具

GCC:
gcc -m32 -o program32 program.c  # 编译为 32 位程序
gcc -m64 -o program64 program.c  # 编译为 64 位程序
Clang:
clang -m32 -o program32 program.c
clang -m64 -o program64 program.c

2. ARM

指令集

指令集:RISC(精简指令集)

位宽:

ARMv7:32 位。
ARMv8:64 位。

应用场景

应用场景:移动设备、嵌入式系统、物联网。

编译工具

GCC(ARM 工具链):
arm-linux-gnueabi-gcc -o program program.c  # 32 位 ARM
aarch64-linux-gnu-gcc -o program program.c  # 64 位 ARM
Clang:
clang --target=arm-linux-gnueabi -o program program.c  # 32 位 ARM
clang --target=aarch64-linux-gnu -o program program.c  # 64 位 ARM

3. MIPS

指令集

指令集:RISC(精简指令集)

位宽

位宽:

MIPS32:32 位。
MIPS64:64 位。

应用场景

应用场景:嵌入式系统、网络设备(如路由器)

编译工具

GCC(MIPS 工具链):
mips-linux-gnu-gcc -o program program.c  # 32 位 MIPS
mips64-linux-gnuabi64-gcc -o program program.c  # 64 位 MIPS
Clang:
clang --target=mips-linux-gnu -o program program.c  # 32 位 MIPS
clang --target=mips64-linux-gnuabi64 -o program program.c  # 64 位 MIPS

4. RISC-V

指令集

指令集:RISC(精简指令集),开源设计。

位宽

位宽:

RV32:32 位。
RV64:64 位。

应用场景

应用场景:嵌入式系统、学术研究、新兴硬件。

编译工具

编译工具

GCC(RISC-V 工具链):
riscv64-unknown-elf-gcc -o program program.c  # 64 位 RISC-V
riscv32-unknown-elf-gcc -o program program.c  # 32 位 RISC-V
Clang:
clang --target=riscv64 -o program program.c  # 64 位 RISC-V
clang --target=riscv32 -o program program.c  # 32 位 RISC-V

二、交叉编译

1. 什么是交叉编译?

定义

定义:在一种架构的机器上编译生成另一种架构的可执行文件

应用场景

应用场景:

  1. 开发嵌入式系统(如 ARM 设备)。
  2. 为不同平台构建软件(如 x86 主机为 ARM 设备编译程序)。

2. 交叉编译工具链

命名规则:架构-系统-编译器,例如:

arm-linux-gnueabi-gcc:ARM 架构,Linux 系统,GCC 编译器。
riscv64-unknown-elf-gcc:RISC-V 架构,嵌入式系统,GCC 编译器。

3. 交叉编译步骤

(1) 安装工具链

Debian/Ubuntu:
sudo apt install gcc-arm-linux-gnueabi gcc-aarch64-linux-gnu
sudo apt install gcc-mips-linux-gnu gcc-riscv64-linux-gnu

CentOS/RHEL:
sudo yum install gcc-arm-linux-gnu gcc-aarch64-linux-gnu
sudo yum install gcc-mips-linux-gnu gcc-riscv64-linux-gnu

(2) 编写代码

// hello.c
#include 

int main() {
    printf("Hello, Cross-Compilation!\n");
    return 0;
}

(3) 交叉编译

ARM 32 位:
arm-linux-gnueabi-gcc -o hello_arm hello.c
ARM 64 位:
aarch64-linux-gnu-gcc -o hello_arm64 hello.c
MIPS 32 位:
mips-linux-gnu-gcc -o hello_mips hello.c
RISC-V 64 位:
riscv64-unknown-linux-gnu-gcc -o hello_riscv hello.c

(4) 验证可执行文件

file hello_arm
#输出示例:ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked...

4. 运行交叉编译的程序

模拟器:使用 QEMU 模拟目标架构运行程序。

sudo apt install qemu-user
qemu-arm ./hello_arm
qemu-aarch64 ./hello_arm64
qemu-mips ./hello_mips
qemu-riscv64 ./hello_riscv
目标设备:将可执行文件传输到目标设备运行。

三、总结

架构 指令集 位宽 编译工具 交叉编译工具链
x86/x86_64 CISC 32/64 位 GCC、Clang 无需交叉编译
ARM RISC 32/64 位 GCC、Clang arm-linux-gnueabi-gcc 等
MIPS RISC 32/64 位 GCC、Clang mips-linux-gnu-gcc 等
RISC-V RISC 32/64 位 GCC、Clang riscv64-unknown-elf-gcc 等


你可能感兴趣的:(上位机知识篇,CPU,arm,mips,x86,RISC-V,QEMU,交叉编译)