rk3568 SDK的buildroot添加package

开发源码工程

首先进入<SDK>/app 目录下,在该目录下创建一个名为“mypackage”的文件夹。
在 mypackage 目录下创建一个.c 源文件 main.c,以及一个 Makefile 文件。
大家可以自己在 main.c 源文件中编写一个简单的测试代码,譬如打印一个“buildroot mypackage”

#include <stdio.h>int main(int argc, char **argv)
{printf("buildroot mypackage\n");return 0;
}

Makefile 文件中的内容如下所示:

mypackage: main.o$(CC) -o mypackage main.o
%.o: %.c$(CC) -c $< -o $@

目的就是将 main.c 源文件编译成一个可执行文件 mypackage。

添加 package

进入<Buildroot>/package 目录, 在该目录下创建一个名为 mypackage 的目录。
在 mypackage 目录下创建两个文件: Config.in 和 mypackage.mk
Config.in 文件的内容如下所示:

config BR2_PACKAGE_MYPACKAGEbool "my package"helpthis configuration is used to enable or disable mypackage.

Config.in 文件的语法规则与 Linux Kernel、 U-Boot 中 Kconfig 文件的语法规则是一样的。
mypackage.mk 文件的内容如下所示:

################################################################################
#
# mypackage
#
################################################################################
# 给你的软件包定义一个版本号
MYPACKAGE_VERSION = 1.0
# 你的软件包所在目录
MYPACKAGE_SITE = $(TOPDIR)/../app/mypackage
# 获取软件包的方式, local 表示从本地获取,有些包可能需要通过网络下载,譬如 git 仓库中的项目
MYPACKAGE_SITE_METHOD = local
# 列出在编译软件包之前 需要执行的配置操作
define MYPACKAGE_CONFIGURE_CMDS
endef
# 列出编译软件包时 需要执行的操作
define MYPACKAGE_BUILD_CMDS
$(MAKE) -C $(@D) CC=$(TARGET_CC)
endef
# 列出将软件包安装到 target 目录(<Buildroot>/output/rockchip_rk3568/target)时需要执行的操作
define MYPACKAGE_INSTALL_TARGET_CMDS
$(INSTALL) -D -m 0755 $(@D)/mypackage $(TARGET_DIR)/usr/bin/mypackage
endef
# 表示当前软件包是一个通用型软件包基础结构
$(eval $(generic-package))

注意: 该文件中定义了一些变量以及宏,所有的这些变量、 宏都以前缀 MYPACKAGE_开头, 不能乱来, 它必须等于 Config.in、 mypackage.mk 文件所在目录(mypackage) 对应的名字(小写字母转换为大写)。
上面已经解释了这些变量、宏的作用, 除了这些变量、宏之外,还可以在.mk 文件中定义很多其它的变量或者宏,每个变量或宏都有自己的意义。

$(MAKE):表示 make 命令;
$(@D): 表示软件包所在目录, 注意这个目录并不是<SDK>/app/mypackage、而是该软件包在 output/rockchip_rk3568/build/目录下对应的文件夹;编译软件包之前, buildroot 会将<SDK>/app/mypackage 拷 贝 至 <Buildroot>/output/rockchip_rk3568/build/ 目 录 , 并 重 命 名 为mypackage-1.0(1.0 就是版本号)。所以这个“$(@D)”指的是 output/rockchip_rk3568/build/mypackage-1.0 这个目录。
$(TOPDIR):表示 buildroot 顶层目录,也就是<SDK>/buildroot 目录。
$(TARGET_CC):表示交叉编译器, RK 平台默认使用 buildroot 交叉编译器,交叉编译器所在路径为: <Buildroot>/output/rockchip_rk3568/host/bin/aarch64-buildroot-linux-gnu-gcc。
$(INSTALL):表示 install 命令。
$(TARGET_DIR):表示 target 目录<Buildroot>/output/rockchip_rk3568/target。

接下来打开 package/Config.in 文件, 将下面这行内容添加到该文件中:
在这里插入图片描述

使能并编译 package

在自己的buildroot config文件添加:
BR2_PACKAGE_MYPACKAGE=y

编译:
./build.sh rootfs
或者:make mypackage-rebuild

编译成功后,生成可执行文件:
<SDK>/buildroot/output/rockchip_rk3568/target/usr/bin/mypackage

拷贝到终端,执行成功:

在这里插入图片描述

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

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

相关文章

设计模式-建造者(生成器)模式

文章目录 简介建造者模式的核心概念产品&#xff08;Product&#xff09;建造者&#xff08;Builder&#xff09;指挥者&#xff08;Director&#xff09;建造者模式与其他设计模式的关系工厂模式和建造者模式uml对比 建造者模式的实现步骤建造者模式的应用场景spring中应用 建…

RabbtiMQ的安装与使用

一、安装Erlang与Rabbitmq 安装教程本教程是在centos8下试验的&#xff0c;其实linux系统的都差不多RabbitMQ官方&#xff1a;Messaging that just works — RabbitMQRabbitMQ是开源AMQP实现&#xff0c;服务器端用Erlang语言编写&#xff0c;Python、Ruby、 NET、Java、JMS、c…

软件架构之前后端分离架构服务器端高并发演进之路

软件架构之前后端分离架构&服务器端高并发演进之路 前后端分离架构从业务角度从质量属性从性能角度 服务器端关于不同并发量的演进之路1. 单体架构2. 第一次演进&#xff1a;应用服务器和数据库服务器分开部署3. 第二次演进&#xff1a;引入本地缓存和分部署缓存4. 第三次演…

录屏没有声音?录制声音,3招教你搞定

在录制屏幕内容时&#xff0c;声音是不可或缺的要素之一&#xff0c;可以有效地增强录制视频的表现力和传达效果。然而&#xff0c;有时候可能会遇到录屏没有声音的情况&#xff0c;这可能会让录制的视频失去一部分重要信息。本文将为您介绍录屏录声音的3种方法&#xff0c;帮助…

nios里面打开eclipse遇到Unresolved inclusion: “system.h“等问题

问题&#xff1a;在Nios中打开软核部分代码时&#xff0c;遇到一堆Unresolved inclusion: "system.h"等问题报错 原因&#xff1a;bsp文件和软核没关联&#xff0c;导致找不到头文件地址&#xff0c;关联一下就好 解决步骤&#xff1a; 右键bsp文件&#xff0c;点击…

肖sir__设计测试用例方法之等价类02_(黑盒测试)

设计测试用例方法之等价类02_&#xff08;黑盒测试&#xff09; 一、掌握常用的设计方法: 黑盒测试方法&#xff1a;等价类、边界值&#xff0c;状态迁移法、场景法、判定表、因果图、正交表&#xff0c;&#xff08;7种&#xff09; 经验测试方法&#xff1a;错误推测法、异常…

[数据集][目标检测]裸土识别裸土未覆盖目标检测数据集VOC格式857张2类别

数据集格式&#xff1a;Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件&#xff0c;仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数)&#xff1a;857 标注数量(xml文件个数)&#xff1a;857 标注类别数&#xff1a;2 标注类别名称:["luotu","n…

数学建模:相关性分析

&#x1f506; 文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 数学建模&#xff1a;相关性分析 文章目录 数学建模&#xff1a;相关性分析相关性分析两变量的相关分析PearsonSpearmanKendall tua-b 双变量关系强度测量的指标相关系数的性质代码实现example偏相关分析 相…

尚硅谷SpringMVC (9-13)

九、HttpMessageConverter HttpMessageConverter &#xff0c;报文信息转换器&#xff0c;将请求报文转换为 Java 对象&#xff0c;或将 Java 对象转换为响应报文 HttpMessageConverter提供了两个注解和两个类型&#xff1a; RequestBody &#xff0c; ResponseBody &#xff…

使用Docker安装和部署RabbitMQ

&#x1f680; 1 拉取RabbitMQ Docker镜像 首先&#xff0c;使用Docker命令从Docker Hub拉取RabbitMQ官方镜像。打开终端并运行以下命令&#xff1a; docker pull rabbitmq&#x1f680; 2 创建RabbitMQ容器 一旦镜像下载完成&#xff0c;使用以下命令创建RabbitMQ容器&…

linux复习笔记01(小滴课堂)

1.安装CentOs7系统 点击下一步在自定义硬件中&#xff1a; 我们可以删除我们不使用的&#xff0c;后续如果需要再加上即可。 然后我们就可以开启这台虚拟机了。 我们可以进行下载cetos7. 这里选择简体中文就可以。 时间的设置。 可以开启下网络。 在这里选择设置root密码&#…

高忆管理:证券账户国债逆回购怎么操作?

国债逆回购的本质就是一种短期贷款&#xff0c;个人经过国债回购商场把自己的资金借出去&#xff0c;取得固定的利息收益&#xff0c;那么&#xff0c;证券账户国债逆回购怎样操作&#xff1f;怎样在股票账户上买国债逆回购&#xff1f;下面高忆管理为我们准备了相关内容&#…

嵌入式面试笔试刷题(day14)

文章目录 前言一、进程控制块1.PCB控制块的作用2.PCB的存储位置 二、进程的三级映射三、return , exit, pthread_exit四、pthread_join作用五、互斥锁和信号量的区别六、怎么判断链表是否有环总结 前言 本篇文章继续我们的刷题之路。 一、进程控制块 这里只讲解进程的PCB控制…

内网隧道代理技术(二十)之 CS使用HTTP代理上线不出网机器

CS使用HTTP代理上线不出网机器 CS工具自带上线不出网机器 如图A区域存在一台中转机器,这台机器可以出网,这种是最常见的情况。我们在渗透测试的过程中经常是拿下一台边缘机器,其有多块网卡,边缘机器可以访问内网机器,内网机器都不出网。这种情况下拿这个边缘机器做中转,…

Laravel 表单验证器的常用的2种使用方法

1、使用控制器的 validate 方法进行参数验证 场景一&#xff1a;前后端未分离 /*** 保存一篇新的博客文章。** param Request $request* return Response*/ public function store(Request $request) {$this->validate($request, [title > required|unique:posts|max:2…

基于神经网络结合紫外差分光谱的二氧化硫浓度定量预测

基于神经网络结合紫外差分光谱的二氧化硫浓度定量预测 前言一、代码运行1. 解压数据2. 导包3. 读取数据4. 构建网络5. 设置优化器6. 模型训练7. 可视化loss8. 模型验证 二、结果展示三、总结作者简介 前言 二氧化硫&#xff08;SO2&#xff09;是一种常见的环境污染物&#xff…

电梯五方对讲接口说明 Sip五方对讲使用说明

1.2/4线接线模块输出接口;接4方对讲设备:12V&#xff0c;2/4线接线模块供电输入 -:GND&#xff0c;接地 R二/四线R Li二四线L 2.RS-485接口:预留援口&#xff0c;可接读卡器、楼层控制器、探头&#xff0c;需要软件额外开发实现。 3.短路输出接口2:对应短路输入接口&#x…

【C++】DICOM医学影像工作站PACS源码

PACS即影像存档与传输系统&#xff0c;是医学影像、数字化图像技术、计算机技术和网络通讯技术相结合的产物&#xff0c;是处理各种医学影像信息的采集、存储、报告、输出、管理、查询的计算机应用程序。 PACS是基于DICOM标准的医学影像管理系统&#xff0c;其模块覆盖了从影像…

【USRP】产品型号、参数、架构全解析系列 6:N320 / N321

一、USRP 简介 通用软件无线电外设( USRP ) 是由 Ettus Research 及其母公司National Instruments设计和销售的一系列软件定义无线电。USRP 产品系列由Matt Ettus领导的团队开发&#xff0c;被研究实验室、大学和业余爱好者广泛使用。 大多数 USRP 通过以太网线连接到主机&am…

ZooKeeper基础命令和Java客户端操作

1、zkCli的常用命令操作 &#xff08;1&#xff09;Help &#xff08;2&#xff09;ls 使用 ls 命令来查看当前znode中所包含的内容 &#xff08;3&#xff09;ls2查看当前节点数据并能看到更新次数等数据 &#xff08;4&#xff09;stat查看节点状态 &#xff08;5&#xf…