|
|
# HybridOS Buildroot
|
|
|
|
|
|
|
|
|
- [概述](#概述)
|
|
|
- [系统要求](#系统要求)
|
|
|
+ [必选包](#必选包)
|
|
|
+ [可选包](#可选包)
|
|
|
- [HybridOS Buildroot 的获取](#hybridos-buildroot-的获取)
|
|
|
- [配置和编译](#配置和编译)
|
|
|
+ [配置目标系统选项](#配置目标系统选项)
|
|
|
+ [配置编译选项](#配置编译选项)
|
|
|
+ [配置工具链](#配置工具链)
|
|
|
+ [选择要编译的包](#选择要编译的包)
|
|
|
+ [编译](#编译)
|
|
|
+ [保存配置](#保存配置)
|
|
|
|
|
|
|
|
|
## 概述
|
|
|
|
|
|
本文将介绍如何使用 HybridOS Buildroot 为一个新的开发板编译 HybridOS 的步骤和过程。
|
|
|
|
|
|
## 系统要求
|
|
|
|
|
|
主机建议使用最新的 Linux 长期支持版本,比如 Ubuntu Linux LTS 18.04 or 20.04。
|
|
|
|
|
|
### 必选包
|
|
|
|
|
|
* which
|
|
|
* sed
|
|
|
* make (version 3.81 or any later)
|
|
|
* binutils
|
|
|
* build-essential (only for Debian based systems)
|
|
|
* gcc (version 4.8 or any later)
|
|
|
* g++ (version 4.8 or any later)
|
|
|
* bash
|
|
|
* patch
|
|
|
* gzip
|
|
|
* bzip2
|
|
|
* perl (version 5.8.7 or any later)
|
|
|
* tar
|
|
|
* cpio
|
|
|
* unzip
|
|
|
* rsync
|
|
|
* file (must be in /usr/bin/file)
|
|
|
* bc
|
|
|
* wget
|
|
|
* git
|
|
|
|
|
|
### 可远包
|
|
|
|
|
|
* subversion
|
|
|
* bazaar
|
|
|
* cvs
|
|
|
* mercurial
|
|
|
* rsync
|
|
|
* scp
|
|
|
|
|
|
## HybridOS Buildroot 的获取
|
|
|
|
|
|
使用 git 从服务器克隆仓库,地址如下:
|
|
|
|
|
|
```
|
|
|
https://gitlab.fmsoft.cn/hybridos/buildroot.git
|
|
|
```
|
|
|
|
|
|
## 配置和编译
|
|
|
|
|
|
下面将以全志 R818 AXP305 开发板为例描述 HybridOS Buildroot 配置和编译的整个过程。
|
|
|
|
|
|
### 配置目标系统选项
|
|
|
|
|
|
使用 `make menuconfig` 打开配置界面, 进入 `Target options` 子菜单
|
|
|
|
|
|
* `Target Architecture` : 用于选择目标的架构,对于 R818 此处选 `AArch64 (little endian)`
|
|
|
* `Target Binary Format` : 二进制格式, 取默认值 ELF
|
|
|
* `Target Architecture Variant` : CPU信息, 对于 R818 选择 `cortex-A53`
|
|
|
* `Floating point strategy` : 浮点数配置,对于 R818 此处选对 `FP-ARMv8`
|
|
|
|
|
|
### 配置编译选项
|
|
|
|
|
|
检查编译选项,确保 `paranoid check of library/header paths` 未被选中,该选项默认状未选中。部分库的头文件路径包括 /usr/include 或 /usr/lib,这些路径在交叉编译时是不安全的。编译器在编译时会发出警告信息,如果选中该选项,则会发出错误信息,并中止编译过程。
|
|
|
|
|
|
其菜单路径如下:
|
|
|
|
|
|
```bash
|
|
|
make menuconfig -->
|
|
|
Build options -->
|
|
|
Advanced -->
|
|
|
paranoid check of library/header paths
|
|
|
```
|
|
|
|
|
|
### 配置工具链
|
|
|
|
|
|
工具链的主要选项位于 `Toolchain` 子菜单,其路径如下:
|
|
|
|
|
|
```bash
|
|
|
make menuconfig -->
|
|
|
Toolchain -->
|
|
|
```
|
|
|
|
|
|
* Toolchain type : 工具链类型,这里选择 `Buildroot toolchain` 意思是自己编译工具链
|
|
|
* C library : 选择 `glibc`
|
|
|
* Kernel Headers : 选择 `Linux 4.9.x kernel headers`
|
|
|
* Binutils Version : 选择 `binutils 2.34`
|
|
|
* GCC compiler Version : 选择 `binutils 2.34`
|
|
|
* Enable C++ support : 选中该选项
|
|
|
* Enable MMU support : 选中该选项
|
|
|
|
|
|
### 选择要编译的包
|
|
|
|
|
|
进入以下选项,选择以下要编译的包
|
|
|
|
|
|
```bash
|
|
|
make menuconfig -->
|
|
|
Target packages
|
|
|
```
|
|
|
|
|
|
### 编译
|
|
|
|
|
|
直接使用 `make` 命令来进行编译,编译生成的结果在 output/target 目录。
|
|
|
|
|
|
```bash
|
|
|
$ make
|
|
|
```
|
|
|
|
|
|
### 保存配置
|
|
|
|
|
|
可以通过命令 `make savedefconfig` 将配置保存为配置文件, 该命令生成的文件名为 `defconfig`。可以将其改名为 `<boardname>_defconfig`,例如 `r818_defconfig`,放入 `configs`目录。可以可以通过命令 `make r818_defconfig` 加载该配置,之后再使用 `make` 来编译。
|
|
|
|
|
|
|