首页 > 其他分享 >buildroot --- 新添加一个 package(应用)

buildroot --- 新添加一个 package(应用)

时间:2024-06-20 15:00:33浏览次数:18  
标签:buildroot package rockchip wifitest --- PKG 软件包 output

参考资料:https://buildroot.org/docs.html 

buildroot-slides.pdf 章节 Integrating new packages in Buildroot

 

 

以下基于RK3308 SDK(与 SDK 关系不大,其他 SDK 类似)

 

在 app 文件夹下新建个文件夹 wifitest,里面新建两个文件

main.c

#include <stdio.h>


int main(int argc, char **argv)
{
    printf("hello world!\n");
    return 0;
}

Makefile

wifitest: main.o
    $(CC) -o wifitest main.o

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

clean:
    rm -rf .stamp_configured
.PHNOY: clean

 

CC 的值是 make 的时候传入

删除 .stamp_configured 是因为防止重新编译提示:.files-list.before: No such file or directory

 

buildroot/package 文件夹内新建一个文件夹 wifitest,里面新建两个文件

Config.in

config BR2_PACKAGE_WIFITEST
    bool "wifi test"
    default y
    help
        this configuration is used to enable or disable wifitest.

 

wifitest.mk

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

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

 

打开 package/Config.in 文件,将下面这行内容添加到该文件中:

source "package/wifitest/Config.in"

 

make menuconfig 可看见 "wifi test" 被选中

 

执行 make wifitest-rebuild

可执行文件 wifitest 根据 wifitest.mk 的设置,被拷贝到 buildroot/output/rockchip_rk3308_h_32_release/target/usr/bin/ 

可执行文件 wifitest 来源于 buildroot/output/rockchip_rk3308_h_32_release/build/wifitest-1.0/

 

标签:buildroot,package,rockchip,wifitest,---,PKG,软件包,output
From: https://www.cnblogs.com/god-of-death/p/18258675

相关文章

  • MySQL-Day3
    学习目标写SQL三步法边写边运行,否则后面出错时候会难以排查搭框架基本的select语句框架建起来,如果有多表,把相应的多表联合起来看条件决定where后面的显示的字段select后面的内容连接查询内连接两张表相同地方select*from 左/右连接包括内连接以及左/右部......
  • MySQL-Day4
    学习目标MySQL的内置函数concat拼接字符串函数把12,34,‘ab’,拼接成‘1234ab’selectconcat(12,34,'ab')length返回字符串字符的个数计算字符串长度‘abc’selectlength('abc')返回3一个utf-8,一个汉字表示3个长度selectlength(‘我和you’) 返回9内置函数可以......
  • three.js 第六节 -纹理和贴图(普通贴图、hdr贴图)
    素材//@ts-nocheck//引入three.jsimport*asTHREEfrom'three'//导入轨道控制器import{OrbitControls}from'three/examples/jsm/controls/OrbitControls'//导入lil.guiimport{GUI}from'three/examples/jsm/libs/lil-gui.module.min.js&......
  • 数据库数据恢复-oracle数据库常见故障及数据恢复分析
    作为存储和处理数据的系统,oracle数据库在使用过程中不可避免会出现各种导致数据丢失和数据损坏的故障。总结出oracle数据库常见故障以及恢复可能性。1、Oracle数据库无法启动或者启动后无法正常工作。如果故障是突发性的,通常情况下恢复的可能性极高。出现这类故障后,首先要检查s......
  • 服务器数据恢复-重建MDisk导致VDisk丢失的数据恢复案例
    服务器数据恢复环境:IBM某型号存储;Solaris操作系统,部署Oracle数据库。服务器故障:重建MDisk导致对应的存储池中的VDisk丢失,导致Solaris操作系统中的Oracle数据库无法使用。服务器数据恢复过程:1、将所有涉及到Oracle数据库的VDisk以只读模式连接到备份服务器上,在只读模式下对......
  • 单细胞测序最好的教程(八): 细胞类型自动注释-1|基于marker的自动注释
    作者按本章节主要讲解了基于marker的自动注释方法,一般来说,我会先自动注释,再手动去确认marker,这是因为,对于一个陌生的组织,我对marker是不了解的,自动注释可以帮助我快速熟悉细胞类型。本教程首发于单细胞最好的中文教程,未经授权许可,禁止转载。全文字数|预计阅读时间:5000|5min......
  • 银河麒麟v10(Sword)(aarch64架构)安装zhongkui-waf
    银河麒麟v10(Sword)(aarch64架构)安装zhongkui-waf系统:KylinLinuxAdvancedServerreleaseV10(Sword)waf官网地址:https://github.com/bukaleyang/zhongkui-waf需要安装的组件:OpenResty、ZhongKui、libmaxminddb和geoipupdate官方提供了install.sh脚本可以安装,但是脚本......
  • 数据库系统概论-第6章关系数据理论
    6.1问题的提出针对一个具体问题,应该如何构造一个适合于它的数据库模式,即应该构造几个关系模式,每个关系由哪些属性组成。关系数据库的规范化理论。本章中把关系模式看作一个三元组R<U,F>。当且仅当U上的一个关系r满足F时,r称为关系模式R<U,F>的一个关系。作为一个二维表,关系要......
  • 数据库系统概论-第4章数据库安全性
    数据库的数据保护主要包括数据的安全性和完整性。4.1数据库安全性慨述指保护数据库以防止不合法使用所造成的数据泄露,更改或破坏。4.1.1数据库的不安全因素①非授权用户对数据库的恶意存取和破坏。②数据库中重要或敏感的数据被泄露。③安全环境的脆弱性。4.1.2安全标准......
  • 目标检测——SCUT-HEAD:大规模人头检测数据集的深度剖析
    引言亲爱的读者们,您是否在寻找某个特定的数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。在当今科技飞速发展的时代,计算机视觉技术正以惊人的速度改变着我们的生活。......