export ARCH=arm64
是一个在 Unix/Linux 系统中设置环境变量的命令,其作用是为当前终端会话指定目标架构为 ARM 64位(即 AArch64
架构)。以下是分步解释:
1. export
命令的作用
export
用于将变量标记为环境变量,使其在当前终端会话及其子进程中生效。- 环境变量会影响程序(如编译器、构建系统)的行为,例如指定目标平台、工具链路径等。
2. ARCH
变量的含义
ARCH
是一个常见的环境变量,通常表示目标架构(Architecture)。- 在编译、交叉编译或构建系统(如 Linux 内核、Android、Yocto 等)时,
ARCH
用于告诉构建工具:- 目标平台的处理器架构(如 x86、ARM、ARM64 等)。
- 选择对应的工具链(如编译器、链接器、库文件)。
3. arm64
的含义
arm64
是 ARM 架构的 64 位版本,官方名称为 AArch64(ARM Architecture 64-bit)。- 它是 ARMv8 架构的一部分,与传统的 32 位 ARM(ARMv7,即
arm
)区分开来。 - 常见于现代移动设备(如高端手机)、嵌入式系统、服务器芯片(如 AWS Graviton)等。
4. 典型使用场景
- 交叉编译:在 x86 主机上编译 ARM64 平台的代码。
export ARCH=arm64 export CROSS_COMPILE=aarch64-linux-gnu- # 指定工具链前缀 make
- 构建 Linux 内核:指定目标架构为 ARM64。
export ARCH=arm64 make defconfig make -j$(nproc)
- Android 开发:编译 NDK 库或系统镜像时指定架构。
- Yocto/OpenEmbedded:在构建配置中设置
MACHINE
或ARCH
。
5. 验证是否生效
- 运行
echo $ARCH
检查变量值:$ export ARCH=arm64 $ echo $ARCH arm64
- 如果未生效,可能是:
- 命令未执行(如拼写错误)。
- 环境变量作用域仅在当前终端,新终端需重新设置。
6. 常见关联变量
CROSS_COMPILE
:指定交叉编译工具链前缀(如aarch64-linux-gnu-
)。TARGET_ARCH
:某些系统(如 Android NDK)中可能使用此变量。MACHINE
:在 Yocto 中指定目标设备(如raspberrypi4
)。
7. 注意事项
- 区分
arm
和arm64
:arm
通常指 32 位 ARM(ARMv7)。arm64
指 64 位 ARM(AArch64)。
- 工具链匹配:需确保工具链(如
gcc-aarch64-linux-gnu
)已安装。 - 永久生效:若需持久化,可将命令写入
~/.bashrc
或~/.zshrc
。
总结
export ARCH=arm64
的核心目的是:告诉构建系统,当前操作的目标平台是 ARM 64 位架构,从而选择正确的工具链和配置,确保编译或构建过程适配 ARM64 处理器。