You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Buildroot中添加自定义包 编写.mk文件集成自定义库

向Buildroot添加自定义单文件库的实现方法

目录与配置文件准备

首先在Buildroot源码根目录的package/路径下新建自定义库的专属目录,比如命名为libfoo,你自己写的foo.c、foo.h可以直接放在这个目录下,适合本地开发调试场景。
目录内需要新增两个配置文件:

  • Config.in:声明包的配置项,让库能在配置界面被选中
  • libfoo.mk:定义库的构建、安装规则

首先写Config.in内容,直接复制以下内容即可:

config BR2_PACKAGE_LIBFOO
	bool "libfoo"
	help
	  Custom foo runtime library.

之后需要把这个配置项接入Buildroot的总配置:打开package/Config.in文件,在第三方库分类的段落里添加一行source "package/libfoo/Config.in",保存退出。

libfoo.mk编写示例

因为是只有单个源文件的简单库,直接用Buildroot的generic-package通用构建框架即可,不需要依赖autotools、cmake等构建工具,示例内容如下:

################################################################################
#
# libfoo
#
################################################################################
LIBFOO_VERSION = 1.0.0
# 指定源码路径为本地包目录
LIBFOO_SITE = $(TOPDIR)/package/libfoo
LIBFOO_SITE_METHOD = local

# 构建命令:直接用交叉编译器编译生成动态库,不需要额外写Makefile
define LIBFOO_BUILD_CMDS
	$(TARGET_CC) -fPIC -shared $(@D)/foo.c -o $(@D)/libfoo.so.1.0.0 -Wl,-soname,libfoo.so.1
	ln -sf libfoo.so.1.0.0 $(@D)/libfoo.so.1
	ln -sf libfoo.so.1 $(@D)/libfoo.so
endef

# 安装命令:库文件拷到系统库路径,头文件拷到系统头文件路径
define LIBFOO_INSTALL_TARGET_CMDS
	# 安装动态库到目标根文件系统
	$(INSTALL) -D -m 0755 $(@D)/libfoo.so* $(TARGET_DIR)/usr/lib/
	# 安装头文件到交叉编译 staging 目录,供其他包交叉编译时调用
	$(INSTALL) -D -m 0644 $(@D)/foo.h $(STAGING_DIR)/usr/include/
	# 如需在目标板本地编译程序,就保留下面这行,不需要可以注释掉省镜像空间
	$(INSTALL) -D -m 0644 $(@D)/foo.h $(TARGET_DIR)/usr/include/
endef

$(eval $(generic-package))

写完配置后,执行make menuconfig,在Target packages分类下找到libfoo选项勾选,之后正常执行Buildroot编译流程,库就会自动被编译并打包进最终的根文件系统镜像。
如果你的主应用也是通过Buildroot编译的,只需要在主应用对应的.mk文件中添加[你的主应用包名]_DEPENDENCIES = libfoo,就能保证库先于应用编译,编译时自动识别依赖。

头文件引用问题说明

只要你在安装步骤中将foo.h放到了系统标准头文件搜索路径/usr/include下,不管是用Buildroot交叉编译应用,还是系统部署完成后在目标板本地编译程序,都可以直接用#include <foo.h>的形式引用头文件,不需要写../foo.h这类相对路径。

注意:如果不需要在目标板上做本地编译,可以删掉.mk中往TARGET_DIR安装头文件的命令,头文件只会存在于交叉编译环境中,不会占用最终根文件系统的空间,也完全不影响已编译好的主应用运行。

内容的提问来源于stack exchange,提问作者hmz-rhl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 04:39:22