buildroot构建根文件系统报错(已解决大部分问题)


title: buildroot构建根文件系统报错(set FORCE_UNSAFE_CONFIGURE=1)
author: cbus
categories:

  • 小知识
    tags:
  • 小知识
    abbrlink: 53691
    date: 2025-04-20 08:03:00

错误1 set FORCE_UNSAFE_CONFIGURE=1

在使用buildroot构建根文件系统时,一切按照文档的配置,但是在make的时候出现:

checking whether mknod can create fifo without root privileges... configure: error: in `/home/xxx/buildroot-2025.02/output/build/host-tar-1.35':
configure: error: you should not run configure as root (set FORCE_UNSAFE_CONFIGURE=1 in environment to bypass this check)
See `config.log' for more details
package/pkg-generic.mk:253: recipe for target '/home/xxx/buildroot-2025.02/output/build/host-tar-1.35/.stamp_configured' failed
make: *** [/home/xxx/buildroot-2025.02/output/build/host-tar-1.35/.stamp_configured] Error 1

错误2 expected 4.1.x, got 4.0.x

解决错误1之后,出现下面问题:

Incorrect selection of kernel headers: expected 4.1.x, got 4.0.x
package/pkg-generic.mk:253: recipe for target '/home/xxxbuildroot-2025.02/output/build/toolchain-external-custom/.stamp_configured' failed
make: *** [/home/xxx/buildroot-2025.02/output/build/toolchain-external-custom/.stamp_configured] Error 1

错误3 toolchain-external-custom/.stamp_configured failed

解决问题2后,编译过程出现以下问题:

Fortran support is not selected but is available in external toolchain
package/pkg-generic.mk:253: recipe for target '/home/xxx/buildroot-2025.02/output/build/toolchain-external-custom/.stamp_configured' failed
make: *** [/home/xxx/buildroot-2025.02/output/build/toolchain-external-custom/.stamp_configured] Error 1
OpenMP support is not selected but is available in external toolchain
package/pkg-generic.mk:253: recipe for target '/home/zwl/linux/IMX6ULL/buildroot-2025.02/output/build/toolchain-external-custom/.stamp_configured' failed
make: *** [/home/zwl/linux/IMX6ULL/buildroot-2025.02/output/build/toolchain-external-custom/.stamp_configured] Error 1

错误4 fatal error: sys/random.h: No such file or directory

解决以上问题后,又又又出现下面问题:

ubi-utils/ubihealthd.c:15:24: fatal error: sys/random.h: No such file or directory
compilation terminated.
Makefile:3020: recipe for target 'ubi-utils/ubihealthd.o' failed
make[1]: *** [ubi-utils/ubihealthd.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory '/home/zwl/linux/IMX6ULL/buildroot-2025.02/output/build/host-mtd-2.2.1'
package/pkg-generic.mk:270: recipe for target '/home/zwl/linux/IMX6ULL/buildroot-2025.02/output/build/host-mtd-2.2.1/.stamp_built' failed
make: *** [/home/zwl/linux/IMX6ULL/buildroot-2025.02/output/build/host-mtd-2.2.1/.stamp_built] Error 2
ERROR: No hash found for busybox-1.29.3.tar.bz2
package/pkg-generic.mk:175: recipe for target '/home/zwl/linux/IMX6ULL/buildroot-2025.02/output/build/busybox-1.29.3/.stamp_downloaded' failed
make: *** [/home/zwl/linux/IMX6ULL/buildroot-2025.02/output/build/busybox-1.29.3/.stamp_downloaded] Error 1

解决方法

可以看到,报错里面让我们set FORCE_UNSAFE_CONFIGURE=1 in environment to bypass this check

首先切换管理员用户

sudo su root

然后输入

export FORCE_UNSAFE_CONFIGURE=1

最后重新构建。

make

对于问题2

expected 4.1.x, got 4.0.x,意思是我们在配置buildroot的Toolchain时,选择的内核头为4.1.x,而交叉编译器里的内核头为4.0.x。我们打开交叉编译器的version.h文件

sudo vim /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/include/linux/version.h

image-20250419220915108

可以看到,LINUX_VERSION_CODE 262144,此值为10进制,转换为16进制为40000,对应的linux内核版本为4.0.x

image-20250419221040333

我们将buildroot的Toolchain里面的External toolchain kernel headers series改为4.0.x,然后最好清理一下

make clean

然后重新编译:

make

对于问题三,很明显,提示也给出了原因

进入配置界面在Toolchain交叉编译工具下输入y使能Fortran和OpenMP。

image-20250419225041243

针对问题四,较老版本的Linux 是没有 sys/random.h 文件的,所以我们需要修改下载的busybox版本

进入busybox目录下:

/home/xxx/buildroot-2025.02/package/busybox

修改BUSYBOX_VERSION 为1.29.3.然后终端输入

make busybox-dirclean
make

编译后,出现缺少Hash,添加Hash后,又会出现 Buildroot 正在尝试对 busybox-1.33.2 的源码打补丁时,找不到要打补丁的文件,所以补丁失败,最终构建失败。

改到这博主又去把这些补丁删除,不让Buildroot打补丁,但是后续编译就会出错。

所以只能删掉现在的buildroot,换成低版本。换成低版本后,没有报错,直接可以编译成功,所以按照手册来才是最优解,不然折腾太磨人了。

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

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

相关文章

7.QT-常用控件-QWidget|font|toolTip|focusPolicy|styleSheet(C++)

font API说明font()获取当前widget的字体信息.返回QFont对象.setFont(const QFont& font)设置当前widget的字体信息. 属性说明family字体家族.⽐如"楷体",“宋体”,"微软雅⿊"等.pointSize字体⼤⼩weight字体粗细.以数值⽅式表⽰粗细程度取值范围为[…

通过面向目标的奖励弥合人与机器人的灵活性差距

24年10月来自纽约大学的论文“Bridging the Human to Robot Dexterity Gap through Object-Oriented Rewards”。 直接通过人类视频训练机器人是机器人技术和计算机视觉领域的一个新兴领域。尽管双指机械手在双指夹持器方面取得了显著进展,但以这种方式让多指机械手…

C++入门篇(下)

目录 1、引用 1.1 引用概念 1.2 引用特性 1.3 常引用 1.4 使用场景 1.4.1 引用做参数 1.4.2 引用做返回值 1.5 引用和指针的区别 2、内联函数 2.1 概念 2.2 特性 3、auto关键字 4、基于范围的for循环 5、指针空值nullptr 5.1 C98 中的指针空值处理 5.2 C11 …

Multi-Query Attention (MQA) PyTorch 实现

和多头注意力机制的唯一区别:K、V在不同的head之间实现了复用,而对于不同的头,Q依然不同。 因此这里的代码和标准多头注意力的实现也是几乎完全一样: import torch import torch.nn as nn import torch.nn.functional as Fclass…

visual studio无法跳转到函数定义、变量定义、跳转函数位置不准问题解决

参考:https://blog.csdn.net/snakehacker/article/details/135438353 程序有时会出现大部分函数都不能准确的从头文件中正确定位到函数定位,这是因为数据库错乱造成的,可以通过重构数据库来解决,操作方法如下: 菜单栏:工具——选项 文本编辑…

Java优雅实现判空方法

在 Java 开发中,频繁的 if (obj ! null) 判空代码会导致代码冗余、可读性差,且容易遗漏判空导致 NullPointerException。以下从 语言特性、设计模式、工具类 和 编码规范 四个维度,结合实际案例,详解如何优雅处理空值问题。 一、…

京东百亿补贴杀入外卖市场:一场关乎即时零售未来的攻防战

当美团和饿了么在外卖市场双雄争霸十余年之际,京东突然以"百亿补贴免佣金"的组合拳高调入场。这场看似跨界的外卖大战,实则是互联网巨头对万亿级即时零售市场的生死争夺。 外卖只是表象,即时零售才是终极战场 京东黑板报4月10日官…

UNION和UNION ALL的主要区别

UNION和UNION ALL的主要区别在于处理重复数据和排序的方式。 UNION和UNION ALL都是SQL语言中用于合并两个或多个SELECT语句结果集的关键字。它们的主要区别如下: 1、对重复结果的处理:UNION在进行表链接后会筛选掉重复的记录,而UNION ALL不会…

七段码 路径压缩 并查集 dfs

12.七段码 - 蓝桥云课 将七个二极管映射为 1-7 开一个二维矩阵 为 相邻的边连上线 edge[1][2] edge[1][6] 1;edge[2][1] edge[2][3] edge[2][7] 1;edge[3][2] edge[3][4] edge[3][7] 1;edge[4][3] edge[4][5] 1;edge[5][4] edge[5][6] edge[5][7] 1;edge[6][1…

科技如何改变世界?

技术是我们日常生活中不可或缺的一部分,以至于我们常常忘记了它的重要性。如果你正在科技领域工作,或者希望进入该领域,你可能是众多有使命感的人之一,希望知道自己的日常工作能为社会或地球的长远利益做出贡献。 别再四处寻找了…

抽象的https原理简介

前言 小明和小美是一对好朋友,他们分隔两地,平时经常写信沟通,但是偶然被小明发现他回给小美的信好像被人拆开看过,甚至偷偷被篡改过。 对称加密算法 开头的通信过程比较像HTTP服务器与客户端的通信过程,全明文传输…

高级java每日一道面试题-2025年4月13日-微服务篇[Nacos篇]-Nacos如何处理网络分区情况下的服务可用性问题?

如果有遗漏,评论区告诉我进行补充 面试官: Nacos如何处理网络分区情况下的服务可用性问题? 我回答: 在讨论 Nacos 如何处理网络分区情况下的服务可用性问题时,我们需要深入理解 CAP 理论以及 Nacos 在这方面的设计选择。Nacos 允许用户根据具体的应用…

python解压文件 zip tar.gz tar.xz

以下代码为解压zip包 tar包文件 zip_path:文件绝对路径 output_folder:文件解压后存放的文件夹路径 def extract_file(zip_path, output_folder):# 支持解压zip tar tar.gz tar.xz .tar.bz2# 确保输出文件夹存在os.makedirs(output_folder, exist_okT…

网络基础(协议,地址,OSI模型、Socket编程......)

目录 一、计算机网络发展 二、协议 1.认识协议 2.OSI七层模型 3.TCP/IP 五层(或四层)模型 4.协议本质 三、网络传输流程 1.MAC地址 2.协议栈 3.IP地址 IP地址 vs MAC地址 1. 核心区别 2. 具体通信过程类比 3. 关键总结 为什么需要两者? 4.协议栈图解…

生成式AI对话中提示词策略:明确问题、明确目标和提供背景信息是最有效的策略

生成式AI对话中提示词策略:明确问题、明确目标和提供背景信息是最有效的策略 最有效的提示词策略包括明确问题、明确目标和提供背景信息。普适性有效提示词策略可分为三类:明确需求与精确指引型、清晰解释与逻辑排序型、拆解任务与多样化表达型。[局限]数据来源于中国用户,…

AtCoder ABC402 ABCD

A - CBC 把大写字母按顺序连起来 B - Restaurant Queue 一眼队列,stl模拟就行 C - Dislike Foods 显然,每次克服暴力枚举每个菜肴会超时。 然而题目中给了每个菜肴的配菜个数,不妨换过来统计每个配菜用在了哪些菜肴。每次克服时&#x…

Transformer 架构 - 解码器 (Transformer Architecture - Decoder)

欢迎回到我们的 Transformer 系列教程!在上一篇中,我们详细探讨了 Transformer 的编码器,它负责将输入的源序列(比如源语言句子)转换为一系列包含丰富上下文信息的向量表示。 现在,我们将把目光投向 Transformer 的另一半——解码器 (Decoder)。解码器负责接收编码器的输…

神经网络与模型训练过程笔记

1.专有名词 ANN 人工神经网络,一种受生物神经元启发的监督学习算法。输入数据通过网络中的层级函数传递,激活特定神经元。函数复杂度越高,模型对数据的拟合能力越强,预测精度越高。 偏置项 其中x下表从1开始的是输入变量&#xf…

【计算机网络 | 第二篇】常见的通信协议(一)

HTTP和HTTPS有什么区别? 端口号:HTTP默认是80端口,HTTPS默认是443。 URL前缀:HTTPHTTP 的 URL 前缀是 http://,HTTPS 的 URL 前缀是 https://。 安全性和资源消耗:HTTP协议运行在TCP上,都是明…

【python实用小脚本系列】用 Python 自己手搓一个给视频“静音”的小脚本,批量处理,轻松高效制作“无声电影”!

嘿,小伙伴们!今天我来给大家介绍一个超实用的 Python 小工具——一个能给视频“静音”的“声音消除器”!是不是听起来很酷?想象一下,你可以把任何有声视频变成无声视频,是不是很有趣?接下来&…