buildroot

目录

参考:

环境:

buildroot 简介

buildroot 构建 rootfs

Target options 

Build options 

Toolchain

System configuration

Filesystem images

使用问题:


参考:

buildroot 官网

Linaro 交叉编译器


环境:

虚拟机:ubuntu 20.04

buildroot 版本:2020.02.10

目标架构:ARMV7


buildroot 简介

Buildroot 是一个简单高效、易于使用的可通过交叉编译来构建嵌入式 Linux 系统的工具。包含了 busybox 的功能,可以用来快捷规范的搭建根文件系统。buildroot 比 busybox 更上一层楼,buildroot 不仅集成了 busybox,而且还集成了各种常见的第三方库和软件,诸如 QT、tslib 等第三方库。详见文首“参考”项,buildroot 官网中 Documentation。


buildroot 构建 rootfs

        这里构建的 rootfs 是运行在 ARMV7 架构的开发板上,那么首先必须要有“交叉编译工具链”。下载的地址可以见文首“参考”项。我下载的版本是  gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz。

        解压 buildroot 源码包,进入其中。输入"make help" 可以查看 make 选项。输入以下代码进行配置。

make menuconfig

Target options 

        

        Target options 项配置与目标架构相关,必须配置。下面给出我针对 ARMV7 的配置项截图,仅供参考 

 

Build options 

 

        Build options 中我所使用到的项仅 "Number of jobs to run simultaneously" 项。此项设置合理可提示编译速度,这里先提前说明下,在配置完 config 后。编译时不可用 make -jx 的多核编译命令。只能用 make 命令。而想要多核编译,就可以设置此项数值。

        "Download dir" 项是指定 buildroot 编译时下载的第三方软件包的位置

        "Mirrors and Download locations" 项是指定第三方软件包的下载源。其中有一项 "Primary download site"。可以指定主要下载的源选项。默认是空,在编译下载第三方软件包时实测一般都可以正常下载。但偶尔有些软件下载速度巨慢,这个时候可以把 "Primary download site" 项指定内容为 "http://sources.buildroot.net "。某些情况下会下载更快,当然,仅供参考。

Toolchain

        此项指定交叉编译工具链相关参数,非常重要,一般我们是使用本地已存在的交叉编译工具链。当然, buildroot 也可以根据配置从网络下载工具链。下面贴出我配置的截图,仅供参考。 

        "External toolchain" 项表示选择使用 buildroot 外部的工具链

        "Custom toolchain" 项表示选择使用自定义工具链

        "Pre-installed toolchain" 项表示选择已经存在的本地工具链

        "Toolchain path" 项不必多说,工具链路径。需要注意的是路径结束位置,参考配置。

        "Toolchain prefix" 项表示工具链命令前缀。 ARCH 会根据 Target options 项去自动赋值,比如在此为 “arm”。注意此项在最后不要加 "-"。

        "External toolchain gcc version" 项为工具链 gcc 版本,输入 arm-linux-gnueabihf-gcc -v 命令即可获得 gcc 版本。

        "External toolchain kernel headers series"项表示工具链内核版本,在工具链所在目录下输入

find -name "version.h", 即可找到如下路径的 version.h 文件

./arm-linux-gnueabihf/libc/usr/include/linux/version.h

         上述内容仅供参考,不同工具链所在路径肯定有所区别。打开此文件,为以下内容:

        上述 262144 就是内核版本代号,为 10 进制。将其转换为 16 进制为 0X40000,就为  "External toolchain kernel headers series"项的选择值。

        "External toolchain C library" 表示工具链的 C  库类型,一般为 glibc/eglibc。

        后面的选项就没有研究了,有一项 "Toolchain has C++ support" 在支持 QT 时需要选上。

System configuration

     

 "System banner" 指定了系统挂起时的欢迎语。

"Enable root login with password", 表示使能登录密码,然后下面输入登录密码。注意,在这里有个 bug, 当然,可能是版本原因。就是我失能 "Enable root login with password" 项后,也不输入密码,然后制作的根文件系统在启动的时候同样会需要密码,而且密码不管输入什么都是错误的。必须要使能 "Enable root login with password" 项才行,不管是否输入密码。

Filesystem images

        此功能主要针对生成根文件系统的类型,如下:

"ext2/3/4 root filesystem" 项的使能可以生成 ext 格式的根文件系统,通常运行在 EMMC , SD类设备上。

"jffs2 root filesystem" 项的使能生成 jffs2 格式的根文件系统,通常运行在 QSPI Flash 类设备上。 

        

        其余的配置项,保持即可。经过上面的配置,已经可以生成一个目标架构可以运行的基本 rootfs 了。然后终端执行 make, 注意不能 make -jx 指定多核编译。在此过程中,确保联网,buildroot 会根据配置从网上下载所需包。下载完成后就会开始编译构建。最后,生成的 rootfs 镜像会在 output/images 文件夹下。


使用问题:

        在使用 sudo make 编译时,提示如下错误

        意为不应该使用 root 权限去编译,在环境中设置  FORCE_UNSAFE_CONFIGURE=1 可以忽略此检查,在编译的过程中是需要 root 权限的,所以更改编译指令如下:

sudo make FORCE_UNSAFE_CONFIGURE=1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值