十三、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))

浙公网安备 33010602011771号