• buildroot使用总结


    一、buildroot使用步骤

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

    编译出图形配置界面,如下图所示:

    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 来构建根文件系统,首先是禁止 Linux 内核的编译

    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 变量是用于设置命令提示符格式,可选参数含义如下图所示:

    \! 显示该命令的历史记录编号。
    \# 显示当前命令的命令编号。
    \$ 显示$符作为提示符,如果用户是 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。

  • 相关阅读:
    PHP权限控制系统PHPGACL
    专注于系统开发
    PHP多条件查询处理
    SMTP协议初探(二)linux下c编程实现发邮件
    linux物理内存探测
    使用select和shutdown
    float & double 内存布局
    网易校园招聘c++题目如何让new操作符不分配内存,只调用构造函数
    linux内存管理概述
    linux物理内存描述
  • 原文地址:https://www.cnblogs.com/iriczhao/p/15644269.html
Copyright © 2020-2023  润新知