# 交叉编译与多架构支持

URL: https://caijiao.org/gentoo/cross-compile
Source: docs/gentoo/cross-compile.md
Description: 本章介绍 Gentoo 系统的交叉编译与多架构支持方法，包括工具链配置、目标架构设置和软件包构建。

在掌握 Overlay 与自定义 ebuild 后，下一步是 **学习 Gentoo 系统的交叉编译与多架构支持**，实现不同硬件平台的软件构建。

## 一、交叉编译概述

- **交叉编译（Cross Compile）**：在一个架构的系统上编译生成另一个架构的可执行文件  
- 常用于嵌入式开发或多平台软件发布  
- Gentoo 提供强大的 Portage 支持多架构构建

## 二、安装交叉编译工具链

1. 安装目标架构工具链，例如 ARM：

```bash
emerge --ask sys-devel/arm-none-eabi-gcc
````

2. 确认工具链版本：

```bash
arm-none-eabi-gcc --version
```

## 三、设置目标架构

1. 使用 Portage 配置多架构支持：

```bash
echo "ACCEPT_KEYWORDS=\"~amd64 ~arm\"" >> /etc/portage/make.conf
```

2. 配置 `CHOST` 和 `CFLAGS`：

```bash
CHOST="armv7a-hardfloat-linux-gnueabi"
CFLAGS="-O2 -march=armv7-a -mfpu=neon -mfloat-abi=hard"
```

> ⚡ 根据目标硬件选择合适的架构标志

## 四、构建软件包

1. 为目标架构构建 ebuild：

```bash
emerge --root=/mnt/arm-root --target=armv7a-linux-gnueabi app-misc/hello
```

2. 或使用 `crossdev` 构建完整交叉工具链：

```bash
emerge --ask crossdev
crossdev --target armv7a-linux-gnueabi
```

- 自动安装交叉编译所需的编译器、库和工具

## 五、多架构管理建议

- 为不同架构创建独立根目录，避免混淆系统环境
- 配合 Overlay 和自定义 ebuild 实现目标架构软件包扩展
- 定期同步 Portage 树，保持交叉编译环境更新

## 六、建议操作

- 熟悉目标硬件架构和编译选项
- 测试交叉编译结果，确保兼容性
- 使用交叉工具链构建镜像前先在虚拟机或硬件上验证
