哪个网站是免费建站,ui设计培训是什么,前端开发常用网站,网络营销网站建设课程文章目录 前言一、四种 CPU 架构1. x86/x86_64指令集位宽#xff1a;应用场景编译工具 2. ARM指令集位宽#xff1a;应用场景编译工具 3. MIPS指令集位宽应用场景编译工具 4. RISC-V指令集位宽应用场景编译工具 二、交叉编译1. 什么是交叉编译#xff1f;定义应用场景 2. 交… 文章目录 前言一、四种 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复杂指令集。
位宽 x8632 位。 x86_6464 位兼容 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.c2. ARM
指令集
指令集RISC精简指令集。
位宽 ARMv732 位。 ARMv864 位。 应用场景
应用场景移动设备、嵌入式系统、物联网。
编译工具
GCCARM 工具链
arm-linux-gnueabi-gcc -o program program.c # 32 位 ARM
aarch64-linux-gnu-gcc -o program program.c # 64 位 ARMClang
clang --targetarm-linux-gnueabi -o program program.c # 32 位 ARM
clang --targetaarch64-linux-gnu -o program program.c # 64 位 ARM3. MIPS
指令集
指令集RISC精简指令集。
位宽
位宽 MIPS3232 位。 MIPS6464 位。 应用场景
应用场景嵌入式系统、网络设备如路由器。
编译工具
GCCMIPS 工具链
mips-linux-gnu-gcc -o program program.c # 32 位 MIPS
mips64-linux-gnuabi64-gcc -o program program.c # 64 位 MIPSClang
clang --targetmips-linux-gnu -o program program.c # 32 位 MIPS
clang --targetmips64-linux-gnuabi64 -o program program.c # 64 位 MIPS4. RISC-V
指令集
指令集RISC精简指令集开源设计。
位宽
位宽 RV3232 位。 RV6464 位。 应用场景
应用场景嵌入式系统、学术研究、新兴硬件。
编译工具
编译工具
GCCRISC-V 工具链
riscv64-unknown-elf-gcc -o program program.c # 64 位 RISC-V
riscv32-unknown-elf-gcc -o program program.c # 32 位 RISC-VClang
clang --targetriscv64 -o program program.c # 64 位 RISC-V
clang --targetriscv32 -o program program.c # 32 位 RISC-V二、交叉编译
1. 什么是交叉编译
定义
定义在一种架构的机器上编译生成另一种架构的可执行文件。
应用场景
应用场景
开发嵌入式系统如 ARM 设备。为不同平台构建软件如 x86 主机为 ARM 设备编译程序。
2. 交叉编译工具链
命名规则架构-系统-编译器例如 arm-linux-gnueabi-gccARM 架构Linux 系统GCC 编译器。 riscv64-unknown-elf-gccRISC-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 stdio.hint main() {printf(Hello, Cross-Compilation!\n);return 0;
}(3) 交叉编译
ARM 32 位
arm-linux-gnueabi-gcc -o hello_arm hello.cARM 64 位
aarch64-linux-gnu-gcc -o hello_arm64 hello.cMIPS 32 位
mips-linux-gnu-gcc -o hello_mips hello.cRISC-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 等