文章目录

  • 一、《buildroot使用步骤》
    • 1、构建图形配置界面
    • 2、配置Target options
    • 3、配置Build options
    • 4、配置Toolchain
    • 5、配置 System configuration
    • 6、配置 Filesystem images。
    • 7、禁止编译 Linux 内核和 uboot
    • 8、编译
    • 9、测试文件系统
    • 10、buildroot使用总结
  • 二、《问题总结》
    • (2-1)在启动根文件系统后命令行的命令提示符一直为“#”
    • (2-2)工具链中Gcc版本和kernel headers series版本选择问题

一、《buildroot使用步骤》

1、构建图形配置界面
make menuconfig

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

2、配置Target options

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

这里以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

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

编译完成后如下图

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

9、测试文件系统

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

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版本

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

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。

【buildroot】buildroot使用总结相关推荐

  1. Buildroot用户指南

    第一章        关于Buildroot Buildroot是一个包含Makefile和修补程序[patch]的集合,这个集合可以使你很容易的为你的目标构建交叉工具链[cross-compilat ...

  2. buildroot的使用简介【转】

    本文转载自:http://blog.csdn.net/flfihpv259/article/details/51996204 buildroot简介 1 Buildroot at a glance 2 ...

  3. 根文件系统构建(Buildroot 方式)

    目录 何为buildroot? buildroot 简介 buildroot 下载 buildroot 构建根文件系统 配置buildroot 编译buildroot buildroot 根文件系统测 ...

  4. 初识Buildroot

    转自CSDN ,记录是为了作者小编学习需要 作者:xixihaha331 什么是buildroot Buildroot是Linux平台上一个构建嵌入式Linux系统的框架.整个Buildroot是由M ...

  5. buildroot自带程序(库)编译并安装

    前几天情绪有点低落,经过周末的调整重新恢复状态,谢谢有爱的朋友们留言和点赞,有你们的陪伴我会更加努力,让我们一起开心写程序..... buildroot简介: 引用官方的简述: Buildroot是一 ...

  6. buildroot:Linux平台构建嵌入式Linux系统的框架

    buildroot是Linux平台上一个构建嵌入式Linux系统的框架.整个Buildroot是由Makefile脚本和Kconfig配置文件构成的.你可以和编译Linux内核一样,通过buildro ...

  7. sdk开发包怎么使用_怎么使用 Buildroot 构建根文件系统?

    1. Buildroot 简介 制作根文件系统有归多种方法: ① 使用Busybox手工制作 Busybox本身包含了很了Linux命令,但是要编译其他程序的话需要手工下载.编译,如果它需要某些依赖库 ...

  8. buildroot教程

    什么是buildroot Buildroot是Linux平台上一个开源的嵌入式Linux系统自动构建框架. 0.下载buildroot Buildroot版本每2个月,2月,5月,8月和11月发布一次 ...

  9. buildroot的使用简介

    文章目录 1 buildroot简介 1.1 Buildroot at a glance 1.2下载 1.3目录说明 2 使用 2.1 平台配置 2.2 Toolchains in Buildroot ...

  10. buildroot认知

    什么是buildroot Buildroot是Linux平台上一个构建嵌入式Linux系统的框架.整个Buildroot是由Makefile脚本和Kconfig配置文件构成的.你可以和编译Linux内 ...

最新文章

  1. 【shell】删除重复文件
  2. 挑战蓝牙/Wi-Fi NFA争食无线音频应用大饼(转)
  3. cin 和 getline 混用中需要注意的问题
  4. UA MATH564 概率分布1 二项分布下
  5. 297. Serialize and Deserialize Binary Tree
  6. gedit用圖形界面修改背景顏色
  7. 海归硕士程序员吐槽:我回国竟然找不到工作,这到底是什么操作?
  8. apache 启用 gzip压缩
  9. python基础1之 由来、种类、优缺点、安装环境
  10. centos中多台主机免密登录_mac ssh 免用户名密码远程登录 linux 方法
  11. 心电信号matlab电路仿真实例,基于matlab的心电信号分析系统的设计与仿真.docx
  12. MFC最详细入门教程[转载]
  13. 通达信登录服务器文件夹,我也搞定了通达信交易系统多帐号登录交易!
  14. bodymovin导出没有html5,AE脚本-导出json格式的Web动画工具 Bodymovin v5.5.3+使用教程
  15. Arduino通过HX1838红外接收模块控制红色发光LED
  16. 我眼中的几个测试认证(ISTQB/CSTQB/软件评测师)
  17. html5css3菜鸟教程,HTML5+CSS3实现拖放(Drag and Drop)示例
  18. Android 按钮实现按压水波纹效果
  19. 推荐几款视频声音变声软件给大家
  20. 奥德赛商务车改装哪一些是必要的?

热门文章

  1. Docker镜像压缩与优化
  2. ACM训练日记—2月7日
  3. laravel框架搭建voyager
  4. 打造稳定可靠聪明的智慧酒店系统
  5. badger 一个高性能的LSM K/V store
  6. 华为为什么和中兴竞争,水火不容,势不两立?
  7. 中标麒麟操作系统,yum安装软件时提示:“已加载插件:langpacks,无须任何处理“的解决办法
  8. Error response from daemon: conflict: unable to delete image has dependent child images
  9. 天津人民优步司机当周奖励政策 (8.3-8.9)
  10. MYSQL详解(5)-索引(一)