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.hqwc.cn/news/99747.html

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

相关文章

Unity 切换场景后场景变暗

问题 Unity版本&#xff1a;2019.4.34f1c1 主场景只有UI&#xff0c;没有灯光&#xff0c;天空盒&#xff1b;其他场景有灯光和天空盒所有场景不烘焙主场景作为启动场景运行&#xff0c;切换到其他场景&#xff0c;场景变暗某一个场景作为启动场景运行&#xff0c;光影效果正…

Python怎么实现更高效的数据结构和算法? - 易智编译EaseEditing

要实现更高效的数据结构和算法&#xff0c;你可以考虑以下几个方面的优化&#xff1a; 选择合适的数据结构&#xff1a; 选择最适合你问题的数据结构至关重要。例如&#xff0c;如果需要频繁插入和删除操作&#xff0c;可能链表比数组更合适。如果需要高效查找操作&#xff0…

企业无线局域网部署最佳实践

文章目录 企业无线局域网部署最佳实践引言1. 无线网规划和设计a. 选择合适的频宽b. 网络规划工具c. 考虑物理环境d. 用户密度和需求e. 未来扩展f. 安全性和策略g. 测试和验证2. 无线局域网容量2.1 用户和设备预测2.2 应用流量分析2.3 带宽管理2.4 无线技术选择2.5 网络健康检查…

CRMEB多端多语言系统文件上传0Day代审历程

Git仓库&#xff1a; https://github.com/crmeb/CRMEB简介&#xff1a; 两天攻防中&#xff0c;某政局子公司官网后台采用的CRMEB开源商城CMS&#xff0c;挺奇葩&#xff0c;别问怎么总让我碰到这种东西&#xff0c;我也不知道&#xff0c;主打的就是一个魔幻、抽象。最后通过…

JMeter(三十九):selenium怪异的UI自动化测试组合

文章目录 一、背景二、JMeter+selenium使用过程三、总结一、背景 题主多年前在某社区看到有人使用jmeter+selenium做UI自动化测试的时候,感觉很是诧异、怪异,为啥?众所周知在python/java+selenium+testng/pytest这样的组合框架下,为啥要选择jmeter这个东西[本身定位是接口测…

HONEYWELL 03ZSTI7-00-402-RS 控制器模块

多通道输入&#xff1a;HONEYWELL 03ZSTI7-00-402-RS 控制器模块通常支持多个输入通道&#xff0c;允许同时监测多个传感器或设备的状态。 高可靠性&#xff1a;HONEYWELL 03ZSTI7-00-402-RS 控制器模块通常设计用于工业环境&#xff0c;具有高可靠性&#xff0c;以确保系统的…

成集云 | 飞书审批同步金蝶云星空 | 解决方案

源系统成集云目标系统 方案介绍 飞书员工报销审批通过后&#xff0c;审批单据内容和审批状态实时同步金蝶云星空 飞书是字节跳动于2016年自研的新一代一站式协作平台&#xff0c;将即时沟通、日历、云文档、云盘和工作台深度整合&#xff0c;通过开放兼容的平台&#xff0c;…

学习Bootstrap 5的第五天

目录 图像 图像形状 实例 对齐图像 实例 居中图像 实例 响应式图像 实例 Jumbotron 实例 图像 图像形状 .rounded 类可以用于为图像或任何具有边框的元素添加圆角。这个类适用于Bootstrap的所有版本&#xff0c;并且在最新版本中得到了进一步的增强。 实例 <…

MySQL表操作

目录 一、创建mysql表的结构 1.在mydb数据库下创建一个表格名字为stu_info&#xff0c;里面结构包含了学号和姓名的名称&#xff0c;字符型以及他的引擎为innodb 字符集为gbk 校队规则为gbk_chinese_ci 二、数据库表查看的基本用法语句 1.查看数据库表明 2.查看数据库表的结…

python3 简易 http server:实现本地与远程服务器传大文件

在个人目录下创建新文件httpserver.py &#xff1a; vim httpserver.py文件内容为python3代码&#xff1a; # !/usr/bin/env python3 import datetime import email import html import http.server import io import mimetypes import os import posixpath import re import…

浅析安防视频监控平台EasyCVR视频融合平台接入大量设备后是如何维持负载均衡的

安防视频监控平台EasyCVR视频融合平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。视频汇聚融合管理平台EasyCVR既具备…

Python关键字(保留字)一览表

保留字是 Python 语言中一些已经被赋予特定意义的单词&#xff0c;这就要求开发者在开发程序时&#xff0c;不能用这些保留字作为标识符给变量、函数、类、模板以及其他对象命名。 Python 包含的保留字可以执行如下命令进行查看&#xff1a; >>> import keyword >…