八、Yocto 创建自定义的conf文件

文章目录

  • Yocto创建自定义的conf文件
    • 保存当前项目的配置文件
    • 使用自定义配置创建编译工作区

Yocto创建自定义的conf文件

本篇文章为基于raspberrypi 4B单板的yocto实战系列的第八篇文章:
一、yocto 编译raspberrypi 4B并启动
二、yocto 集成ros2(基于raspberrypi 4B)
三、Yocto创建自定义的layer和image
四、Yocto创建静态IP和VLAN
五、Yocto集成QT5
六、Yocto给组件分组(packagegroups)
七、Yocto使用systemd设置开机自启动程序

前面几篇系列文章中我们集成了ros 和qt等组件,添加了我们自己的meta-layer,还有自己对image做了一些组件裁剪,这些修改都跟conf/local.conf conf/bblayers.conf这两个文件相关,如果其他同学下载了meta-rpi-robot这个仓库,想要编译rpi-robot-image之前还需要按照之前的每一篇博客里面的操作记录去修改local.conf 和 bblayers.conf是不是太不人性化了,放心,yocto早以替你想到了这个问题,这一章节我们就来创建我们自己的sample。

保存当前项目的配置文件

还记得之前我们的编译指令么:

source poky-kirkstone/oe-init-build-env rpi-build
bitbake rpi-robot-image

这里我们就将当前rpi-build工作区使用的conf文件备份下来,可以使用如下指令:

source poky-kirkstone/oe-init-build-env rpi-build
bitbake-layers save-build-conf ../poky-kirkstone/meta-rpi-robot/ custom-conf

这样就可以将当前的conf文件保存到我们meta-rpi-robot/conf/custom-conf文件夹下面,但是很可惜我在kirkstone这个分支版本的yocto下执行报错了:
在这里插入图片描述
看起来bitbake-layers save-build-conf这个指令并没有被支持,所以目前只能手动拷贝我们当前的local.conf和bblayers.conf文件到我们的meta-rpi-robot下面了:

cd poky-kirkstone
mkdir -p meta-rpi-robot/conf/template
cp ../rpi-build/conf/local.conf meta-rpi-robot/conf/template/local.conf.sample
cp ../rpi-build/conf/bblayers.conf meta-rpi-robot/conf/template/bblayers.conf.sample
touch meta-rpi-robot/conf/template/conf-notes.txt

这样在meta-rpi-robot/conf/template/文件夹下面就有了3个文件:
在这里插入图片描述
需要注意的是我们直接拷贝过去bblayers.conf.sample里面的路径都是绝对路径,需要调整一下,不然在另外一台机器上就无法正常运行了,增加一个OEROOT变量:
在这里插入图片描述
local.conf.sample 文件无需做额外更改
可以看到我们还创建了一个conf-notes.txt文件,这个文件就是用来提示作用的,里面的内容我们设置如下:

Available images for RPI Robot layers are:- Official RPI Robot images:rpi-robot-image       -   RPI Robot image with Qt5 ROS2 support

使用自定义配置创建编译工作区

至此我们有自己的配置文件了,如果使用我们meta-rpi-robot里面的配置文件那么在初始化构建环境的时候需要传递一个变量:TEMPLATECONF,这个变量就是告诉bitbake我们需要使用的conf文件模版在哪个位置。

可以尝试一下使用如下命令使用新的配置文件来创建一个新的工作区(请使用你自己的绝对路径指定TEMPLATECONF):

TEMPLATECONF=/mnt/ext_disk/code/raspberry/poky-kirkstone/meta-rpi-robot/conf/template source poky-kirkstone/oe-init-build-env  rpi-build-2

在这里插入图片描述

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

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

相关文章

基于ssm的智慧餐厅点餐管理系统设计与实现(java项目+文档+元)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的智慧餐厅点餐管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 智慧餐厅点餐管理系统设计…

基于51单片机的无线病床呼叫系统设计—LCD1602显示

基于51单片机的无线病床呼叫系统 (仿真+程序+原理图+设计报告) 功能介绍 具体功能: 1.病人按下按键,LCD1602显示对应的床位号; 2.多人同时呼叫,显示屏同时显示&#xf…

手机银行客户端框架之TMF框架介绍

腾讯移动开发平台(Tencent Mobile Framework)整合了腾讯在移动产品中开发、测试、发布和运营的技术能力,为企业提供一站式、覆盖全生命周期的移动端技术平台。核心服务包括移动客户端开发组件、H5容器、灰度发布、热更新、离线包、网关服务、…

springBoot+vue编程中使用mybatis-plus遇到的问题

mybatis-plus中遇到的问题Code Companion Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)…

【算法刷题 | 二叉树 06】4.10( 路径总和、路径总和 || )

文章目录 13.路径总和13.1问题13.2解法一:递归13.2.1递归思路(1)确定递归函数参数以及返回值(2)确定终止条件(3)确定递归逻辑 13.2.2代码实现 14.路径总和 ||14.1问题14.2解法一:递归…

UDTF函数 explode

场景: 原hive数据形式 split 处理到一个Array 形式 使用explode炸开后的效果是 explode结合侧面视图达到targeType 目标形式: 一进多出 explode 将hive 中复杂的 array 炸成多行 因为炸开后, movie 列值少于categoryname 列所以这里为了达到…

【THM】Net Sec Challenge(网络安全挑战)-初级渗透测试

介绍 使用此挑战来测试您对网络安全模块中获得的技能的掌握程度。此挑战中的所有问题都可以仅使用nmap、telnet和来解决hydra。 挑战问题 您可以使用Nmap、 Telnet 和Hydra回答以下问题。 2.1小于10000的最大开放端口号是多少? 8080 nmap -p- -T4 10.10.234.218 2.2普通…

vue3+ts中判断输入的值是不是经纬度格式

vue3ts中判断输入的值是不是经纬度格式 vue代码&#xff1a; <template #bdjhwz"{ record }"><a-row :gutter"8" v-show"!record.editable"><a-col :span"12"><a-input placeholder"经度" v-model:v…

搜索之bfs

广度优先搜索的定义&#xff1a; 广度优先搜索&#xff08;Breadth-First Search&#xff0c;简称BFS&#xff09;是一种用于遍历或搜索树或图的算法。该算法从根节点&#xff08;或任意一个节点&#xff09;开始&#xff0c;并探索最靠近根节点的邻居节点。在遍历过程中&…

ELK日志分析系统(上)

目录 引言 一、ELK日志分析系统简介 1.1 日志服务器 1.2 ELK日志分析系统的组成 1.3 日志处理步骤 二、Elasticsearch介绍 2.1 概述 2.2 核心概念 三、Logstash介绍 3.1 概述 3.2 主要组件 四、Kibana介绍 4.1 概述 4.2 主要功能 五、ELK的工作原理 六、部署ELK…

创建线程池的例子

public class ExecutorTest {public static void main(String[] args) {//创建线程池的5种方式&#xff1a; // Executors.newFixedThreadPool();//创建固定线程数的线程池 // Executors.newSingleThreadExecutor();//创建单线程的线程池 // Executors.ne…

【C++进阶】--智能指针

1. 为什么需要智能指针 首先我们来分析一下下面这段代码 #include<iostream> using namespace std; int div() {int a, b;cin >> a >> b;if (b 0)throw invalid_argument("除0错误");return a / b; } void Func() {int* p1 new int;int* p2 n…