【buildroot】buildroot使用总结

一、《buildroot使用步骤》
1、构建图形配置界面
make menuconfig

在宿主机上编译出用于配置buildroot的图形配置界面,如下图所示:

image

2、配置Target options

​ 在该项下,主要有以下配置选项:

image

这里以ARM contex-A7型处理器为例,配置选项如下:

Target options
-> Target Architecture									= ARM (little endian)
-> Target Binary Format								= ELF
-> Target Architecture Variant						= cortex-A7
-> Target ABI												= EABIhf
-> Floating point strategy                            = NEON/VFPv4
-> ARM instruction set                                = ARM
3、配置Build options

​ 该项是为build选择特性和参数。可选择的特性有:build-in、modularized、ignored。

4、配置Toolchain

image

5、配置 System configuration
6、配置 Filesystem images。

​ 此选项用于配置我们最终制作的根文件系统的格式。

7、禁止编译 Linux 内核和 uboot

buildroot 不仅仅能构建根文件系统,也可以编译 linux 内核和 uboot。当配置 buildroot时使能 linux 内核和 uboot 后, buildroot 就会自动下载最新的 linux 内核和 uboot 源码并编译。但是以根文件系统作为目标,我们一般都不会使用buildroot下载的linux内核和uboot,因为buildroot 下载的linux和uboot官方源码里面会缺少很多驱动文件,而且关于最新的 linux 内核和uboot会对编译器版本号有要求,可能导致编译失败。因此需要配置 buildroot关闭对linux内核和uboot 的编译,只使用buildroot 来构建根文件系统。

8、编译
sudo make -j12

编译完成后如下图

image

等待编译完成,会在 buildroot-2021.02.3/output/images 下生成根文件系统目录。

9、测试文件系统

​ 将生成的根文件系统进行nfs挂载,然后测试,如下图所示:

image

10、buildroot使用总结

​ 对于buildroot的使用步骤与linux内核 、u-boot以及busybox等的过程是几乎一样的。重要还是对Target packages 第三方软件和库的配置上。


二、《问题总结》
(2-1)在启动根文件系统后命令行的命令提示符一直为“#”

【问题描述】

使用构建的根文件系统启动以后会发现,输入命令的时候命令行前面一直都是“#”,如果我们进入到某个目录的话前面也不会显示当前目录路径。


【问题分析】
是PS1 变量参数设置错误造成的

PS1 变量用于设置命令提示符格式,可选参数含义如下所示:

\! 显示该命令的历史记录编号。
\# 显示当前命令的命令编号。
\$ 显示$符作为提示符,如果用户是 root 的话,则显示#号。
\\ 显示反斜杠。
\d 显示当前日期。
\h 显示主机名。
\n 打印新行。
\nnn 显示 nnn 的八进制值。
\s 显示当前运行的 shell 的名字。
\t 显示当前时间。
\u 显示当前用户的用户名。
\W 显示当前工作目录的名字。
\w 显示当前工作目录的路径

【解决方法】

打开/etc/profile 文件,找到如下所示内容,然后将其屏蔽掉:

#if [ "$PS1" ]; then
#	if [ "`id -u`" -eq 0 ]; then
#		export PS1='# '
#	else
#		export PS1='$ '
#	fi
#fi

添加如下代码:

PS1='[\u@\h]:\w$:'
export PS1
(2-2)工具链中Gcc版本和kernel headers series版本选择问题

【问题描述】

​ 如下图所示,在选择工具链时需要选择gcc的版本和kernel header series版本

image

​ 如果选择不合适,将会出现如下图所的类似提示信息,并终止编译过程:

Incorrect selection of gcc version: expected 7.x, got 5.5.0
Incorrect selection of kernel headers: expected ....

【原因分析及解决方法】

原因是在交叉编译器的路径下有一个内核版本代码,buildroot在执行check-kernel-headers.sh时会检测这个内核版本代码。

描述文件路径为:工具路径/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/include/linux/version.h

#define LINUX_VERSION_CODE 263680 //263680 = 40600(h)

所以应该选择kernel headers series的版本为:4.6.x

如果需要选择对应的kernel header series版本,需要计算出LINUX_VERSION_CODE。

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iriczhao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值