十三、buildroot 系统package新增应用 编写步骤
4.7、package
添加配置文件
4.7.1、操作步骤
1、集成普通包
如
my-custom-package
在
my-custom-package
目录中创建Config.in
文件config BR2_PACKAGE_MY_CUSTOM_PACKAGE
bool "My Custom Package"
help
This is a custom package for testing purposes.
在
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_VERSION
和MY_CUSTOM_PACKAGE_SITE
定义了包的版本和来源。MY_CUSTOM_PACKAGE_BUILD_CMDS
中定义了如何构建包(例如:make
命令)。MY_CUSTOM_PACKAGE_INSTALL_CMDS
中定义了如何安装包(将配置文件复制到目标系统中)。
编辑
buildroot/package/Config.in
文件,添加如下内容source "package/my-custom-package/Config.in"
运行
make menuconfig
来配置Buildroot
启用My Custom Package
创建包源文件
假设是从一个源文件(如
.tar.gz
)下载的,需要准备源代码文件。将源代码直接放在 Buildroot 中的dl
目录下,或者也可以通过源 URL 下载。如果没有源代码文件,可以跳过这个步骤,使用简单的
echo
或静态文件进行测试。编译 & 测试
编译完成后,检查目标文件系统或生成的镜像,确保自定义包文件已经被正确地安装。例如,如果在
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
是一套由 autoconf
、automake
和 libtool
组成的工具集,很多开源项目会用它来配置、编译和安装软件。如果你看到一个项目里有 configure
脚本,那它大概率用的是 Autotools
。
编写步骤
- 创建
.mk
文件:在package
目录下为你的包创建一个新目录,比如my-autotools - package
,然后在这个目录里创建my-autotools - package.mk
文件。 - 定义基本信息:在
.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
- 使用
autotools - package
宏:这是关键一步,它会根据 Autotools 的构建流程生成相应的规则。
$(eval $(autotools-package))
- 自定义配置(可选):要是你需要对配置、编译或安装步骤进行自定义,可以定义相应的变量。
# 自定义配置选项
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
项目文件)。
编写步骤
- 创建
.mk
文件:同样在package
目录下为包创建新目录和.mk
文件,比如my-cmake - package
目录下的my-cmake - package.mk
。 - 定义基本信息:和 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
- 定义依赖项(可选):如果有依赖的包,在这里定义。
PKG_DEPENDS := another-package
- 使用
cmake - package
宏:让 Buildroot 根据 CMake 的流程生成构建规则。
$(eval $(cmake-package))
- 自定义配置(可选):可以通过定义变量来修改 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
,能高效地构建项目。
编写步骤
- 创建
.mk
文件:在package
目录下创建my-meson - package
目录和my-meson - package.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 - package
宏:让 Buildroot 按照 Meson 的构建流程生成规则。
$(eval $(meson-package))
- 自定义配置(可选):通过定义变量修改 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新增应用 编写步骤的更多相关文章
- 【Vue】vue项目目录介绍 es6的导入导出语法 vue项目开发规范 Vue项目编写步骤
目录 昨日回顾 今日内容 0 vue-cli创建项目 node.js环境 创建vue-cli项目 1 vue项目目录介绍 node_modules index.html app.vue package ...
- win8 64位系统,安装JDK的步骤及其环境配置
工具/原料 jdk-8u51-windows-x64.exe 下载地址:::http://www.cr173.com/soft/55503.html#address jdk 安装步骤 1:到oracl ...
- 图解:如何U盘装Win7系统(傻瓜式装机) + 分区步骤图解(用WIN7自带管理工具)
原地址:http://wenku.baidu.com/link?url=wV2Pfw2IM21u2KmtAcNweSZRwpXRuKAVAS29dS4aWGEpMtFdDlzZvixCgsvBxIm- ...
- Linux系统下升级Python版本步骤(suse系统)
Linux系统下升级Python版本步骤(suse系统) http://blog.csdn.net/lifengling1234/article/details/53536493
- Win10系统中新增的快捷键,做个记录
Win10系统中新增的快捷键,做个记录 1.Win+Q或者Win+S 打开下面搜索框 2.Win+T 切换任务栏上程序: 3.Win+ ...
- 从0系统学Android--3.1编写UI界面
从0系统学Android--3.1编写UI界面 本系列文章目录:更多精品文章分类 本系列持续更新中.... 界面设计和功能开发同样重要,界面美观的应用程序不仅可以大大增加用户粘性,还能帮我们吸引到更多 ...
- H5传奇源码,附带微信支付,商城系统,新增了元宝交易商城系统源码
源码说明:传奇游戏是80年底的经典游戏,传奇源码,H5游戏源码下载,附带微信支付,商城系统,新增了元宝交易商城系统源码,内置很多任务,比如首冲任务,修复了很多BUG.[架设要求]游戏名称:H5传奇世界 ...
- Hyperledger Fabric(5)ChainCode的编写步骤
链码(chaincode) 会对 Fabric应用程序 发送的交易做出响应,执行代码逻辑,与 账本 进行交互. 再复习下他们之间的逻辑关系: Hyperledger Fabric 中,Chainco ...
- 联想预装win8系统改成win7操作步骤及注意事项
联想消费台式机与一体机预装Windows8改装Windows7的操作步骤及常见问题 前提说明: 目前联想出厂预装Windows 8的台式和一体机使用都是UEFI+GPT硬盘的组合,并且开启了安全启动, ...
- SaaS系列介绍之十三: SaaS系统体系架构
1 系统体系架构设计 软件开发中系统体系架构决定了一个系统稳定性.健壮性.可扩展性.兼容性和可用性,它是系统的灵魂.体系架构是架构师所关注的核心.良好的体系架构是系统成功的开端,否则,再好的代码与设计 ...
随机推荐
- Qt/C++开发经验小技巧311-315
关于流媒体推拉流延时的几点说明. 经常看到一些流媒体相关的程序,号称零延迟,不用怀疑,这肯定吹牛逼的. 搞音视频开发,有个核心的指标就是实时性,也就是延迟多少毫秒,这个问题问的也是最多的. 音视频文件 ...
- Docker,vs2019下 使用.net core创建docker镜像 遇到的一些问题
步骤主要分为以下几步: 1.创建docker for linux 的.netcore 项目(vs 自动创建了dockerfile 如果没有需要自己创建在根目录下) 2.编译项目到指定目录下 3.b ...
- DeepSeek引发的AI发展路径思考
DeepSeek引发的AI发展路径思考 参考文章来源于科技导报 ,作者李国杰院士 | 哈工大 DeepSeek 技术前沿与应用讲座 1. DeepSeek 的科技突破 7 天之内 DeepSeek 的 ...
- FastAPI中Pydantic异步分布式唯一性校验
title: FastAPI中Pydantic异步分布式唯一性校验 date: 2025/04/02 00:47:55 updated: 2025/04/02 00:47:55 author: cmd ...
- LeetCode1464. 数组中两元素的最大乘积-JAVA
题目 给你一个整数数组 nums,请你选择数组的两个不同下标 i 和 j,使 (nums[i]-1)*(nums[j]-1) 取得最大值.请你计算并返回该式的最大值. 示例 1: 输入:nums = ...
- JAVA 线程实现/创建方式
每天记录一个知识点: 概要: java创建线程的方式: 继承Thread类 实现Runnable接口 通过Callable和Future创建线程 基于线程池的方式 java创建线程池的四种方式: ne ...
- 有的时候,会遇到DataGrid里面嵌套DataGrid(重叠嵌套),然后里面的鼠标滚轮无法响应外面的滚动,为此记录下解决方案
有的时候,会遇到DataGrid里面嵌套DataGrid(重叠嵌套),然后里面的鼠标滚轮无法响应外面的滚动,为此记录下解决方案 本实例是在DataGrid的详情行里再嵌入一个DataGrid,模拟重叠 ...
- 在AI大爆发的背景下,企业管理软件有什么冲击
今天与同行开会提到在AI大爆发的背景下,未来企业管理软件究竟有什么冲击? 我和同事对此问题进行了探讨,一些拙见,与大家分享.先直接说观点:在未来的5到10年,制造业的管理软件市场将几乎消失.下面我来聊 ...
- 【经验】C++|在MFC子线程中,通过正确的传参,访问主线程对话框程序的控件对象、调用类函数
引言 MFC中子线程操控窗口的控件的难点在于: 子线程函数不属于窗口类. 比方说, 窗口类CMFCApplication3Dlg的点击事件函数如下: void CMFCApplication3Dlg: ...
- [HTB] 靶机学习(一)Heal
[HTB] 靶机学习(一)Heal 概要 学习hackthebox的第一天,本人为初学者,将以初学者的角度对靶机渗透进行学习,中途可能会插入一些跟实操关系不大的相关新概念的学习和解释,尽量做到详细,不 ...