4.7、package 添加配置文件

4.7.1、操作步骤

1、集成普通包
  1. my-custom-package

  2. my-custom-package 目录中创建 Config.in 文件

    config BR2_PACKAGE_MY_CUSTOM_PACKAGE
    bool "My Custom Package"
    help
    This is a custom package for testing purposes.
  3. my-custom-package 目录中创建 my-custom-package.mk 文件,设置编译规则

    ###############################################################################
    # My Custom Package - Buildroot Makefile
    ############################################################################### # Define the package name
    MY_CUSTOM_PACKAGE_VERSION = 1.0
    MY_CUSTOM_PACKAGE_SITE = http://example.com/my-custom-package # Define where the sources will be fetched
    MY_CUSTOM_PACKAGE_SOURCE = $(MY_CUSTOM_PACKAGE_SITE)/my-custom-package-$(MY_CUSTOM_PACKAGE_VERSION).tar.gz
    MY_CUSTOM_PACKAGE_SOURCE_DIR = $(BUILD_DIR)/my-custom-package-$(MY_CUSTOM_PACKAGE_VERSION) # The package's build and install steps
    define MY_CUSTOM_PACKAGE_BUILD_CMDS
    # Your build commands here
    # For example: $(MAKE) in the source directory
    echo "Building my custom package"
    endef define MY_CUSTOM_PACKAGE_INSTALL_CMDS
    # Your install commands here
    # Example: copying files to $(TARGET_DIR)
    install -D -m 0644 $(MY_CUSTOM_PACKAGE_SOURCE_DIR)/my-config-file.conf $(TARGET_DIR)/etc/my-config-file.conf
    endef $(eval $(generic-package))

    说明:

    • MY_CUSTOM_PACKAGE_VERSIONMY_CUSTOM_PACKAGE_SITE 定义了包的版本和来源。
    • MY_CUSTOM_PACKAGE_BUILD_CMDS 中定义了如何构建包(例如:make 命令)。
    • MY_CUSTOM_PACKAGE_INSTALL_CMDS 中定义了如何安装包(将配置文件复制到目标系统中)。
  4. 编辑 buildroot/package/Config.in 文件,添加如下内容

    source "package/my-custom-package/Config.in"
  5. 运行 make menuconfig 来配置Buildroot 启用 My Custom Package

  6. 创建包源文件

    ​ 假设是从一个源文件(如 .tar.gz)下载的,需要准备源代码文件。将源代码直接放在 Buildroot 中的 dl 目录下,或者也可以通过源 URL 下载。

    如果没有源代码文件,可以跳过这个步骤,使用简单的 echo 或静态文件进行测试。

  7. 编译 & 测试

    ​ 编译完成后,检查目标文件系统或生成的镜像,确保自定义包文件已经被正确地安装。例如,如果在 my-custom-package.mk 中指定了将配置文件安装到 /etc/my-config-file.conf,可以登录到目标系统,检查文件是否存在。

    cat /etc/my-config-file.conf
2、特定类型的包

​ 在 Buildroot 里,不同类型的包有着不同的构建系统,针对这些不同类型的包,Buildroot 提供了特定的宏来简化构建流程。

构建系统 对应宏 典型项目例子 自定义参数(类比调味)
Autotools autotools-package Linux 内核、GCC PKG_CONFIGURE_OPTS(configure 参数)
CMake cmake-package Qt、FFmpeg(部分模块) PKG_CMAKE_OPTS(-D 参数)
Meson meson-package GNOME 项目、VLC PKG_MESON_OPTS(-D 参数)
简单 Makefile simple-package 自己写的小工具 直接改 PKG_BUILD_CMDS 编译命令
2.1、Autotools

Autotools 是一套由 autoconfautomakelibtool 组成的工具集,很多开源项目会用它来配置、编译和安装软件。如果你看到一个项目里有 configure 脚本,那它大概率用的是 Autotools

编写步骤

  1. 创建 .mk 文件:在 package 目录下为你的包创建一个新目录,比如 my-autotools - package,然后在这个目录里创建 my-autotools - package.mk 文件。
  2. 定义基本信息:在 .mk 文件里定义包的基本信息,像包名、版本、下载源等。
# 包名
PKG_NAME := my-autotools-package
# 版本号
PKG_VERSION := 1.2.3
# 下载源地址
PKG_SITE := http://example.com/downloads
# 源文件名称
PKG_SOURCE := my-autotools-package-$(PKG_VERSION).tar.gz
  1. 定义依赖项(可选):如果你的包依赖其他包,就在这里定义。
# 依赖其他包
PKG_DEPENDS := some-other-package
  1. 使用 autotools - package 宏:这是关键一步,它会根据 Autotools 的构建流程生成相应的规则。
$(eval $(autotools-package))
  1. 自定义配置(可选):要是你需要对配置、编译或安装步骤进行自定义,可以定义相应的变量。
# 自定义配置选项
PKG_CONFIGURE_OPTS += --enable-feature

示例 .mk 文件:

PKG_NAME := my-autotools-package
PKG_VERSION := 1.2.3
PKG_SITE := http://example.com/downloads
PKG_SOURCE := my-autotools-package-$(PKG_VERSION).tar.gz
PKG_DEPENDS := some-other-package # 自定义配置选项
PKG_CONFIGURE_OPTS += --enable-feature $(eval $(autotools-package))
2.2、CMake

CMake 是一个跨平台的构建系统生成工具,它能根据项目的 CMakeLists.txt 文件生成不同平台的构建文件(像 Makefile 或者 Visual Studio 项目文件)。

编写步骤

  1. 创建 .mk 文件:同样在 package 目录下为包创建新目录和 .mk 文件,比如 my-cmake - package 目录下的 my-cmake - package.mk
  2. 定义基本信息:和 Autotools 包类似,定义包名、版本、下载源等。
PKG_NAME := my-cmake-package
PKG_VERSION := 2.0
PKG_SITE := https://github.com/user/my-cmake-package
PKG_SOURCE := my-cmake-package-$(PKG_VERSION).tar.gz
  1. 定义依赖项(可选):如果有依赖的包,在这里定义。
PKG_DEPENDS := another-package
  1. 使用 cmake - package 宏:让 Buildroot 根据 CMake 的流程生成构建规则。
$(eval $(cmake-package))
  1. 自定义配置(可选):可以通过定义变量来修改 CMake 的配置选项。
# 自定义 CMake 配置选项
PKG_CMAKE_OPTS += -DENABLE_FEATURE=ON

示例 .mk 文件:

PKG_NAME := my-cmake-package
PKG_VERSION := 2.0
PKG_SITE := https://github.com/user/my-cmake-package
PKG_SOURCE := my-cmake-package-$(PKG_VERSION).tar.gz
PKG_DEPENDS := another-package # 自定义 CMake 配置选项
PKG_CMAKE_OPTS += -DENABLE_FEATURE=ON $(eval $(cmake-package))
2.3、Meson

Meson 是一个快速、现代化的构建系统,它使用 Python 语法编写构建定义文件 meson.build,能高效地构建项目。

编写步骤

  1. 创建 .mk 文件:在 package 目录下创建 my-meson - package 目录和 my-meson - package.mk 文件。
  2. 定义基本信息:定义包名、版本、下载源等。
PKG_NAME := my-meson-package
PKG_VERSION := 3.0
PKG_SITE := http://example.org/meson-packages
PKG_SOURCE := my-meson-package-$(PKG_VERSION).tar.gz
  1. 定义依赖项(可选):指定依赖的其他包。
PKG_DEPENDS := yet-another-package
  1. 使用 meson - package 宏:让 Buildroot 按照 Meson 的构建流程生成规则。
$(eval $(meson-package))
  1. 自定义配置(可选):通过定义变量修改 Meson 的配置选项。
# 自定义 Meson 配置选项
PKG_MESON_OPTS += -Doption=value

示例 .mk 文件:

PKG_NAME := my-meson-package
PKG_VERSION := 3.0
PKG_SITE := http://example.org/meson-packages
PKG_SOURCE := my-meson-package-$(PKG_VERSION).tar.gz
PKG_DEPENDS := yet-another-package # 自定义 Meson 配置选项
PKG_MESON_OPTS += -Doption=value $(eval $(meson-package))

十三、buildroot 系统package新增应用 编写步骤的更多相关文章

  1. 【Vue】vue项目目录介绍 es6的导入导出语法 vue项目开发规范 Vue项目编写步骤

    目录 昨日回顾 今日内容 0 vue-cli创建项目 node.js环境 创建vue-cli项目 1 vue项目目录介绍 node_modules index.html app.vue package ...

  2. win8 64位系统,安装JDK的步骤及其环境配置

    工具/原料 jdk-8u51-windows-x64.exe 下载地址:::http://www.cr173.com/soft/55503.html#address jdk 安装步骤 1:到oracl ...

  3. 图解:如何U盘装Win7系统(傻瓜式装机) + 分区步骤图解(用WIN7自带管理工具)

    原地址:http://wenku.baidu.com/link?url=wV2Pfw2IM21u2KmtAcNweSZRwpXRuKAVAS29dS4aWGEpMtFdDlzZvixCgsvBxIm- ...

  4. Linux系统下升级Python版本步骤(suse系统)

    Linux系统下升级Python版本步骤(suse系统) http://blog.csdn.net/lifengling1234/article/details/53536493

  5. Win10系统中新增的快捷键,做个记录

    Win10系统中新增的快捷键,做个记录 1.Win+Q或者Win+S 打开下面搜索框                                2.Win+T 切换任务栏上程序:   3.Win+ ...

  6. 从0系统学Android--3.1编写UI界面

    从0系统学Android--3.1编写UI界面 本系列文章目录:更多精品文章分类 本系列持续更新中.... 界面设计和功能开发同样重要,界面美观的应用程序不仅可以大大增加用户粘性,还能帮我们吸引到更多 ...

  7. H5传奇源码,附带微信支付,商城系统,新增了元宝交易商城系统源码

    源码说明:传奇游戏是80年底的经典游戏,传奇源码,H5游戏源码下载,附带微信支付,商城系统,新增了元宝交易商城系统源码,内置很多任务,比如首冲任务,修复了很多BUG.[架设要求]游戏名称:H5传奇世界 ...

  8. Hyperledger Fabric(5)ChainCode的编写步骤

    链码(chaincode) 会对 Fabric应用程序  发送的交易做出响应,执行代码逻辑,与 账本 进行交互. 再复习下他们之间的逻辑关系: Hyperledger Fabric 中,Chainco ...

  9. 联想预装win8系统改成win7操作步骤及注意事项

    联想消费台式机与一体机预装Windows8改装Windows7的操作步骤及常见问题 前提说明: 目前联想出厂预装Windows 8的台式和一体机使用都是UEFI+GPT硬盘的组合,并且开启了安全启动, ...

  10. SaaS系列介绍之十三: SaaS系统体系架构

    1 系统体系架构设计 软件开发中系统体系架构决定了一个系统稳定性.健壮性.可扩展性.兼容性和可用性,它是系统的灵魂.体系架构是架构师所关注的核心.良好的体系架构是系统成功的开端,否则,再好的代码与设计 ...

随机推荐

  1. Mac 刷题环境配置

    Mac 刷题环境配置 这篇博文主要记录自己为了更方便的在 Mac 上写算法题,主要是基于 Clion做的一些环境配置:有些操作其实在 Windows ,Linux 下也是通用的,如果看到的小伙伴也可以 ...

  2. [每日算法] leetcode第88题:合并两个有序数组

    leetcode第88题入口 题目描述 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目. 请你 合并 ...

  3. 面试题-Spring和Springboot框架

    前言 spring框架部分的题目,是我根据Java Guide的面试突击版本V3.0再整理出来的,其中,我选择了一些比较重要的问题,并重新做出相应回答,并添加了一些比较重要的问题,希望对大家起到一定的 ...

  4. 【Java】RESTful风格

    RESTful风格 REST:即 Representational State Transfer.(资源)表现层状态转化.是目前最流行的一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便,所 ...

  5. 【Java】枚举类和注解

    一.枚举类的使用 1. 枚举类的说明: 枚举类的理解:类的对象只有有限个,确定的.我们称此类为枚举类 当需要定义一组常量时,强烈建议使用枚举类 枚举类的实现: JDK 5.0以前需要自定义 JDK 5 ...

  6. 【Java】修饰符

    修饰符(Modifier):是用于限定类型以及类型成员的声明的一种符号. 其用来定义类.方法或者变量,通常放在语句的最前端. 例子: public class Person { default Str ...

  7. fastreport6的frxpngimage.pas不能编译xe下

    升级很痛苦,因为兼容问题. fastreport6的frxpngimage.pas不能编译出现错误 procedure TChunkIDAT.CopyInterlacedRGB8(const Pass ...

  8. L2-3 锦标赛

    先画图理解 具体就是先存入每个左右子树的lose,然后存入根的lose和win 然后往下建树,左右的win也可以交换 可以学习这样的完全二叉树存储结构 #include <bits/stdc++ ...

  9. PriorityQueue作用和源码

    一.PriorityQueue作用和源码 PriorityQueue跟前几个阻塞队列不一样,并没有实现BlockingQueue接口,只是实现了Queue接口,Queue接口中定义了几组放数据和取数据 ...

  10. 康谋分享 | AD/ADAS的性能概览:在AD/ADAS的开发与验证中“大海捞针”!

    如果您希望从数百万小时的驾驶数据中查找特定的相关驾驶事件和未遂事故,以确保您的所需功能正确运行,最好的方法就是创建一个系统性能的概览分析,实现在数据日志中快速检索关注点.为此,康谋在本文将为您详细介绍 ...