构建buildroot根文件系统

news2024/9/26 1:26:27

目录

  • 1.确定gcc工具版本
  • 2.下载Buildroot源码并编译
    • 2.1 下载Buildroot源码
    • 2.2 配置Buildroot
      • 2.2.1 配置 Target options
      • 2.2.2 配置交叉编译工具链
      • 2.2.3 配置 System configuration
      • 2.2.4 配置 Filesystem images
      • 2.2.5 禁止编译 Linux 内核和 uboot
      • 2.2.6 编译Buildroot源码
      • 2.2.7 查看编译结果
  • 3 编译Buildroot中出现的错误

1.确定gcc工具版本

  根据Linux源码版本,确定所使用的gcc编译器的版本,gcc编译器所支持的Linux内核版本查看路径为:gcc文件夹→arm-linux-gnueabihf→libc→usr→include→linux→version.h如下图所示:

微信图片_20240815205755

  由上图可知,支持Linux 5.15.71版本的gcc编译为12.2.1,安装12.2.1版本gcc 交叉编译器,如下图所示:
Screenshot from 2024-08-09 20-32-57

2.下载Buildroot源码并编译

2.1 下载Buildroot源码

  登录Buildroot官网下载Buildroot源码,如下图所示:

Screenshot from 2024-08-15 21-17-00

Screenshot from 2024-08-15 21-17-07

2.2 配置Buildroot

  将下载的Buildroot源码文件buildroot-2024.02.5.tar.gz拷贝到 ~/linux/imx6ull/buildroot,>拷贝完成后进行解压,如下图所示:

Screenshot from 2024-08-09 20-47-24

  输入make menuconfig命令进入图形化配置界面,如下图所示:

Screenshot from 2024-08-09 20-49-52

Screenshot from 2024-08-09 20-51-12

2.2.1 配置 Target options

  配置Target options 选项,需要配置以下项目,对应的配置项及选择的内容如下所示:

配置项配置内容
Target ArchitectureARM (little endian)
Target Binary FormatELF
Target Architecture Variantcortex-A7
Target ABIEABIhf
Floating point strategyNEON/VFPv4
ARM instruction setARM

配置过程如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Screenshot from 2024-08-09 20-51-57

Screenshot from 2024-08-09 20-52-32

Screenshot from 2024-08-09 20-53-15

Screenshot from 2024-08-09 20-53-24

2.2.2 配置交叉编译工具链

  配置Toolchain选项,需要配置以下项目,对应的配置项及选择的内容如下所示:

配置项配置内容
Toolchain typeExternal toolchain
ToolchainCustom toolchain
Toolchain originPre-installed toolchain
Toolchain path/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf
Toolchain prefix$(ARCH)-linux-gnueabihf
External toolchain gcc version12.2.1
External toolchain kernel headers series5.15.71
External toolchain C libraryglibc/eglibc

  配置项及所选内容如下图所示:

Screenshot from 2024-08-09 21-02-10

2.2.3 配置 System configuration

  此选项用于设置一些系统配置,比如开发板名字、欢迎语、用户名、密码等。需要配置的项目和其对应的内容如下所示:

配置项配置内容
System hostnameExternal toolchain
System bannerCustom toolchain
Init systemPre-installed toolchain
/dev management/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf
[*] Enable root login with password (NEW)$(ARCH)-linux-gnueabihf
External toolchain gcc version12.2.1
External toolchain kernel headers series5.15.71
External toolchain C libraryglibc/eglibc

Screenshot from 2024-08-09 21-05-51

2.2.4 配置 Filesystem images

  此选项配置制作的根文件系统的格式,配置如下图所示:

Screenshot from 2024-08-09 21-06-53

2.2.5 禁止编译 Linux 内核和 uboot

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

Screenshot from 2024-08-09 21-07-31

Screenshot from 2024-08-09 21-07-44

2.2.6 编译Buildroot源码

  配置完成以后就可以编译 buildroot 了,编译完成以后 buildroot 就会生成编译出来的根文件系统压缩包,我们可以直接使用。输入sudo make命令开始编译:

Screenshot from 2024-08-09 21-08-21

2.2.7 查看编译结果

​ 编译完成后进入buildroot-2024.02.4/output/images目录查看编译结果,如下图所示:

Screenshot from 2024-07-29 22-02-18

3 编译Buildroot中出现的错误

1.编译过程出现Fortran support is not selected but is available in external toolchain 错误如下图所示:

Screenshot from 2024-08-09 21-41-38

解决办法:进入配置界面在Toolchain交叉编译工具下使能Fortran,如下图所示:

Screenshot from 2024-08-09 21-41-14

2.编译过程出现OpenMP support is not selected but is available in external toolchain 错误如下图所示:

Screenshot from 2024-08-09 21-42-01

解决办法:进入配置界面在Toolchain交叉编译工具下使能OpenMP,如下图所示:

Screenshot from 2024-08-09 21-42-20

3.编译过程出现RPC support not available in C library, please disable BR2_TOOLCHAIN_EXTERNAL_INET_PRC 错误如下图所示:

Screenshot from 2024-08-09 21-42-51

解决办法:进入配置界面在Toolchain交叉编译工具下使能OpenMP,如下图所示:

Screenshot from 2024-08-09 21-43-57

TIjjF4-1724682449966)]

解决办法:进入配置界面在Toolchain交叉编译工具下使能OpenMP,如下图所示:

[外链图片转存中…(img-453lhTk4-1724682449966)]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2077556.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Bootloader中的PBL、SBL的区别

从0开始学习CANoe使用 从0开始学习车载车身 相信时间的力量 星光不负赶路者,时光不负有心人。 目录 1.概述2.BootloaderPBLSBL3.SBL存在意义4.PBL存在意义 1.概述 应用软件和应用数据可以同时编程或者相互独立编程,不允许Boot Loader在软件运行时被非法…

透明度测试

1、透明测试是用于处理哪种透明需求 在游戏开发中对象的某些部位完全透明而其他部位完全不透明,这种透明需求往往不需要半透明效果,相对比较极端,只有看得见和看不见之分比如树叶、草、栅栏等等。(即一张图除了主要物体有颜色,其…

<WPF> xaml代码如何使用c#编写

<Window x:Class"grid面板的使用.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expression/blend/2008&…

【Java】—— Java面向对象基础:编程实例(学生信息管理)

目录 场景描述 定义学生类 创建学生对象并处理需求 代码解析 总结 在Java中&#xff0c;面向对象编程&#xff08;OOP&#xff09;是一种常用的编程范式&#xff0c;它允许我们创建基于现实世界的模型&#xff0c;通过类和对象来模拟这些模型。今天&#xff0c;我们将通过…

MySQL 集群技术全攻略:从搭建到优化(上)

目录 一.Mysql在服务器中的部署方法 1.在Linux下部署mysql 二.mysql的组从复制 1.当有数据时添加slave2 2.延迟复制 3.慢查询日志 4.mysql的并行复制 5.原理架构图 5.1三个线程 5.2复制三步骤 6.架构缺陷 三.半同步模式 1.半同步模式原理 2.gtid模式 3.启用半同…

数组、向量与矩阵

问题缘起 在看《矩阵力量》的时候&#xff0c;写到 利用 a numpy.array([4,3]). 严格说&#xff0c;此代码产生的不是行向量&#xff0c;运行 a.ndim 发现 a 只有一个维度。因此&#xff0c;转置 numpy.array([4,3]).T 得到的仍然是一维数组&#xff0c;只不过默认展示方式为…

腾讯提出一种新的针对风格化角色和逼真服装动画的生成3D运动转移方法,生成效果逼真!

来自腾讯XR视觉实验室的研究团队提出了一种创新的3D运动转移方法&#xff0c;专门针对风格化角色和逼真服装动画的生成。该方法能够将源动作准确地映射到目标角色上&#xff0c;同时考虑了角色身体的刚性变形和服装的局部物理动态变形。 与现有技术相比&#xff0c;这技术不仅…

探索分析文档布局,基于YOLOv8全系列【n/s/m/l/x】参数模型开发构建大规模文档数据集DocLayNet场景下文档图像布局智能检测分析识别系统

随着数字化和信息化的快速发展&#xff0c;大量的文档&#xff08;如合同、报告、表格、发票等&#xff09;以电子形式存在&#xff0c;这些文档中包含了丰富的信息。然而&#xff0c;这些信息往往以非结构化的形式存在&#xff0c;难以直接被计算机程序理解和处理。文档布局分…

8.26DEBUG

线程负责监听和处理不同的需求 顾客&#xff1a;代表需要被监控的文件句柄或网络socket&#xff0c;他们可能有各种需求&#xff0c;如点餐&#xff08;发送数据&#xff09;、询问菜品状态&#xff08;读取数据&#xff09;或需要帮助&#xff08;异常处理&#xff09; 菜单…

Android adb shell查看手机user,user_root,user_debug版本

Android adb shell查看手机user&#xff0c;user_root&#xff0c;user_debug版本 1、首先&#xff0c; adb shell 2、进入后&#xff0c;运行&#xff1a; getprop | grep ro.system.build.type 即会输出当前手机类型user,user_debug等。 另外&#xff0c;也可以运行&#…

NoSql数据库Redis集群

一、关系型数据库和 NoSQL 数据库 1.1 数据库主要分为两大类&#xff1a;关系型数据库与 NoSQL 数据库 关系型数据库 &#xff0c;是建立在关系模型基础上的数据库&#xff0c;其借助于集合代数等数学概念和方法来处理数据库中的数据主流的 MySQL 、 Oracle 、 MS SQL Server…

打渔的寓言--汽车软件开发技术进化史

刺儿&#xff0c;生于渔村。 少有志&#xff0c;即从学&#xff0c;颇有祖逖、车胤之风。尝三冬读书于野&#xff0c;狂风暴雪而不辍&#xff0c;七月就读于闹室而不知挥汗如雨。既加冠&#xff0c;有所成。能熟读古圣贤之书&#xff0c;亦能倒背《春秋》如流。 是年&#xf…

Git在IDEA中的集成操作(附步骤图)

1.先做适配操作&#xff0c;将安装的Git软件关联到IDEA中 点击Test之后若成功会显示出Git版本&#xff1a; 2.创建版本仓库 3.创建新的版本 3.1将文件提交到暂存区(不重要) 第一种方式&#xff1a;菜单栏提交 第二种方式&#xff1a;项目右键提交 4.查看历史版本信息 目…

Pyqt5:多线程任务、窗体打开、常用控件介绍(含基础Demo)

一、多线程任务和第二窗体打开demo 【main】 import untitled import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBoxif __name__ __main__:app QApplication(sys.argv)MainWindow QMainWindow()ui untitled.Ui_MainWindow()#也可能是Ui_Form/U…

网络各层的安全实例:从物理层到应用层的保护

在前面的各节中&#xff0c;我们学习了利用密码学技术实现机密性、完整性、数字签名和实体鉴别等安全服务的基本方法。在本节中&#xff0c;我们将讨论这些方法在网络各层的具体应用实例。这些安全应用实例涉及从物理层到应用层的所有层次。 1. 为什么需要在网络各层提供安全服…

企业级NoSql数据库 --- Redis集群

什么是 redis ? Redis是一个开源的、遵循BSD协议的、基于内存的而且目前比较流行的键值数据库(key-value database)&#xff0c;是一个非关系型数据库&#xff0c;redis 提供将内存通过网络远程共享的一种服务&#xff0c;提供类似功能的还有memcached&#xff0c;但相比memc…

Day18_Netty

文章目录 NettyIO 模型Java有哪些数据类型零拷贝深拷贝和浅拷贝的区别是什么?BIO、NIO、AIO的区别是什么?Netty 是什么?Netty 基于 NIO,那为啥不直接用 NIO 呢? / 为什么要用 Netty?Netty 应用场景了解么?那些开源项目用到了 Netty?Netty的核心组件是什么?请解释Netty…

【LwIP源码学习笔记1】LwIP网络接口管理

netif结构体 netif是Lwip抽象出来的网卡&#xff0c;结构体的声明在Lwip/include/lwip/netif.h文件中。 Lwip将每个用netif描述的网卡连接成一个链表&#xff08;单向链表&#xff09;。 以下是在netif.h头文件中定义的一些netif的操作函数 struct netif *netif_add_noaddr(s…

SpringBoot整合策略模式之基于 ApplicationContextAware + 枚举类实现

文章目录 1、ILog2、LogType 枚举类3、DemoController4、application.properties5、DesignDemoApplication 1、ILog package com.atguigu.design.demo.spring; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; imp…

Nginx学习(第二天)

一.Nginx高级配置 1.1 Nginx状态页 基于nginx 模块 ngx_http_stub_status_module 实现&#xff0c; 在编译安装nginx的时候需要添加编译参数 --with-http_stub_status_module 否则配置完成之后监测会是提示法错误 注意: 状态页显示的是整个服务器的状态,而非虚拟主机的状态 …