rk3568 SDK的buildroot添加package

news/2024/7/1 4:58:15 标签: 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_24">添加 package

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

config BR2_PACKAGE_MYPACKAGE
    bool "my package"
    help
        this 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_80">使能并编译 package

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

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

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

拷贝到终端,执行成功:

在这里插入图片描述


http://www.niftyadmin.cn/n/5002179.html

相关文章

[machine learning]神经网路初步 basic neural network

这一篇写的很差....我会找时间慢慢补充的 1.神经网络是什么 在上一篇关于逻辑回归的博客中,简单介绍了逻辑回归模型,对于监督学习来说,模型可以理解为一个模块/函数,在足够的数据训练以后,通过梯度下降等手段进行拟合,最终根据输入来预测输出结果. 这一个东西,我们可以称之为…

剪辑App的MMKV应用优化实践

作者 | 我爱吃海米 导读 移动端开发中&#xff0c;IO密集问题在很多时候没有得到充足的重视和解决&#xff0c;贸然的把IO导致的卡顿放到异步线程&#xff0c;可能会导致真正的问题被掩盖&#xff0c;前人挖坑后人踩。其实首先要想的是&#xff0c;数据存储方式是否合理&#x…

java IDEA文件路径分层级

如下图这样 在设置里找到Compact Middle Packages&#xff0c;去掉勾选就行了

2023年轨道交通行业研究报告

第一章 行业概况 1.1 定义和分类 在全球行业分类标准&#xff08;GICS&#xff09;的框架下&#xff0c;轨道交通行业被精准地划定为交通运输行业的一个重要子集&#xff0c;其主要职责是专注于沿着预设轨道路线进行乘客和货物运输的系统的设计、实施、维护以及管理。这个行业…

leetcode 1609.奇偶树

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;奇偶树 思路&#xff1a; 树的层序遍历&#xff0c;用队列辅助。用一个变量记录当前是多少层&#xff0c;以及当前层的节点个数&#xff0c;依次遍历&#xff0c;因为需要判断当前层是否严格递增或递减&#xff0c;如果正…

做什么软件利润最高? 效率单词回顾 拼词英语 如何过目不忘:像chatGPT一样预测下个单词

软件利润的高低可以受到多个因素的影响&#xff0c;包括市场需求、竞争态势、用户付费意愿等。以下是一些通常具有较高利润潜力的软件类型&#xff1a; 1. SaaS&#xff08;软件即服务&#xff09;&#xff1a;提供基于订阅和使用量计费的云端软件服务&#xff0c;通常具有较高…

Bridge Champ举办人机对战赛:NFT游戏与传统竞技共生发展编织新格局

概要 现在,NFT与体育竞技正日益紧密地联系在一起。一些体育项目开始推出与赛事或球队相关的NFT,同时也有部分NFT游戏开始举办电子竞技赛事。这种共生发展正在改变体育竞技的生态。 笔者采访了桥牌冠军项目相关负责人,探讨NFT游戏与传统体育竞技的融合潜力。桥牌冠军近期成功举…

OpenLdap +PhpLdapAdmin + Grafana docker-compose部署安装

目录 一、OpenLdap介绍 二、PhpLdapAdmin介绍 三、使用docker-compose进行安装 1. docker-compose.yml 2. grafana配置文件 3. provisioning 四、安装openldap、phpldapadmin、grafana 五、配置OpenLDAP 1. 登陆PhpLdapAdmin web管理 2. 需要注意的细节 内容介绍参考…