如何在Buildroot中添加树外包 自定义WiringPi未构建问题求助
Buildroot自定义WiringPi树外包不构建的解决方法
1. 修复文件名拼写错误
你当前目录结构中所有命名为Confige的文件都属于拼写错误,正确命名应为Config.in,需要修改的文件包括:
./package/Confige->./package/Config.in./package/custom_wiringpi/Confige->./package/custom_wiringpi/Config.in
同时需要在./package/Config.in中添加如下内容,才能让上层配置正确关联子包的配置项:
source "$BR2_EXTERNAL_ROOTFS_PATH/package/custom_wiringpi/Config.in"
2. 补全custom_wiringpi.mk的必要规则
Buildroot的自定义包必须在mk文件末尾调用包注册宏才会被构建系统识别,同时你当前的下载、构建、安装规则都不完整,修改后的custom_wiringpi.mk参考如下:
CUSTOM_WIRINGPI_VERSION = 7f8fe26e4f775abfced43c07657a353f03ddb2d0 CUSTOM_WIRINGPI_SITE = https://github.com/WiringPi/WiringPi.git CUSTOM_WIRINGPI_SITE_METHOD = git CUSTOM_WIRINGPI_LICENSE = LGPL-3.0+ CUSTOM_WIRINGPI_LICENSE_FILES = COPYING.LESSER define CUSTOM_WIRINGPI_BUILD_CMDS $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CC=$(TARGET_CC) endef define CUSTOM_WIRINGPI_INSTALL_TARGET_CMDS $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install DESTDIR=$(TARGET_DIR) endef $(eval $(generic-package))
核心修改点:
- 末尾添加
$(eval $(generic-package)),这是Buildroot识别自定义包的必须规则,缺失的话所有定义的构建步骤都不会被执行 - 调整源码获取方式为git直接拉取对应commit,避免zip路径匹配错误
- 补全交叉编译参数,用Buildroot提供的
TARGET_MAKE_ENV和TARGET_CC变量,保证编译的是适配树莓派架构的二进制 - 增加安装到目标文件系统的步骤,否则编译完成的二进制不会被打包到最终镜像中
3. 验证配置生效
修改完成后执行以下步骤验证:
- 执行
make menuconfig确认custom_wiringpi选项已勾选,保存配置 - 执行
make custom_wiringpi-rebuild单独测试该包的下载、编译、安装流程,如果能正常执行说明配置生效 - 执行完整
make生成镜像即可包含WiringPi组件
内容的提问来源于stack exchange,提问作者Philipp Ludwig
相关产品推荐
相关产品推荐

