buildroot添加package包

  本文通过一个简单的例子介绍如何在 RK3568的buildroot/package 目录下添加一个自己的
package(软件包)

一、开发源码工程

  首先进入/app 目录下,在该目录下创建一个名为“mypackage”的文件夹,如下所示:
在这里插入图片描述
  在 mypackage 目录下创建一个.c 源文件 main.c,以及一个 Makefile 文件:
在这里插入图片描述
  在 main.c 源文件中编写一个简单的测试代码

#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

  进入/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)对应的名字
(小写字母转换为大写)。

	$(MAKE):表示 make 命令;
	$(@D):表示软件包所在目录,注意这个目录并不是<SDK>/app/mypackage、而是该软件包在 output/rockchip_rk3568/build/目录下对应的文件夹;编译软件包之前,buildroot 会将
<SDK>/app/mypackage 拷 贝 至 <Buildroot>/output/rockchip_rk3568/build/ 目 录 , 并 重 命 名 为
mypackage-1.01.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 文件,将下面这行内容添加到该文件中:

source "package/mypackage/Config.in"

在这里插入图片描述
  添加完成后保存退出。

三、使能并编译 package

   执行“make menuconfig”打开图形化配置界面,找到我们添加的 package,然后将其使能:
在这里插入图片描述
  然后保存配置、退出图形化配置界面。
  执行如下命令编译该软件包,如下所示:

make mypackage-rebuild

在这里插入图片描述
  编 译 生 成 一 个 可 执 行 文 件 mypackage , 其 所 在 路 径 为 :output/rockchip_rk3568/target/usr/bin/mypackage。
在这里插入图片描述

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值