简介
buildroot工具,可以构建交叉编译工具链、根文件系统、uboot 以及 Linux 内 核镜像,这里以野火的imx6ull为例用来构建文件系统.
Buildroot 官网链接 https://buildroot.org/
使用步骤
1、下载安装buildroot源码
git clone https://github.com/Embedfire/ebf_6ull_buildroot.git
这里是下载的野火配置好的buildroot,也可以自寻从官网下载,自己配置。
2、安装源码编译环境依赖包
sudo apt-get install -y sed make binutils build-essential gcc g++ bash patch gzip bzip2 perl tar cpio python unzip rsync file bc wget
sudo apt-get install -y python-matplotlib python-numpy
3、配置和修改
cd ebf_6ull_buildroot //进入目录
make clean //清除上次的make命令所产生的object文件(后缀为“.o”的文件)及可执行文件
make imx6ull_ebf_pico_defconfig //指定野火配置文件
make menuconfig //进入buildroot配置文件配置页面,用来选择增加或者删除某些包至目标(开发板)
make busybox-menuconfig //(可选)进入 busybox 配置菜单页面,用来增加/删除某些 busybox 配置。
在menuconfig菜单中然后做自己的修改.
编译时间很长,大概1个小时,Be patient.
buildroot配置文件简介
buildroot配置文件在buildroot的目录如下:
其中imx6ull的配置文件如下所示:
4、编译
make
5.输出
Buildroot输出存储在单个目录output/中。这个目录包含几个子目录:
output/
├── build # 所有组件都是在这里构建的(这包括Buildroot在主机上需要的工具和为目标编译的包)。这个目录
| 包含每个组件的一个子目录。
├── host #包含为该主机构建的工具和目标工具链的sysroot。前者是为正确执行Buildroot所需的主机编译的
| 工具的安装,包括交叉编译工具链。后者是类似于根文件系统层次结构的层次结构。它包含所有提供
| 和安装其他包使用的库的用户空间包的头和库。但是,这个目录并不打算作为目标的根文件系统:它
| 包含大量开发文件、未剥离的二进制文件和库,这使得它对于嵌入式系统来说太大了。这些开发文件
| 用为依赖于其他库的目标编译库和应用程序。
├── images # 存储所有映像(内核映像、引导加载程序映像和根文件系统映像)的地方。这些是您需要放到目标系
| 统中的文件
├── staging #指向host/内部目标工具链sysroot的符号链接,它的存在是为了向后兼容。
└── target #几乎包含了目标的完整根文件系统:所有需要的东西都存在,除了/dev/中的设备文件(Buildroot
不能创建它们,因为Buildroot不是作为root运行的,也不想作为root运行)。此外,它没有正确
的权限(例如busybox二进制文件的setuid)。因此,不应该在目标上使用这个目录。相反,您应该
使用images/目录中构建的映像。如果您需要根文件系统的解压映像以用于在NFS上引导,那么使用
images/中生成的tarball映像并将其解压为根文件。与staging/相比,target/只包含运行所选目
标应用程序所需的文件和库:开发文件(头文件等)不存在,二进制文件被剥离调试信息。
编译成功后文件镜像输出路径为 output/images
编译成功后的output/target文件夹只能用于查看。
6、文件系统使用----烧写or挂载
-
用生成的文件系统替换烧写工具里面的烧写进去就可以了.
-
Buildroot编译完成之后生成的rootfs.tar.bz2,可以解压之后放到NFS服务器上作为NFS ROOT文件系统供开发板使用。使用NFS文件系统,便于程序的开发调试。所谓NFS服务器,就是我们在VMWare上运行的Ubuntu。