news 2026/6/16 1:56:47

RV1106开发板蓝牙实战:用Buildroot 2023.02.6编译BlueZ5,手把手解决wordexp.h报错

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RV1106开发板蓝牙实战:用Buildroot 2023.02.6编译BlueZ5,手把手解决wordexp.h报错

RV1106开发板蓝牙实战:用Buildroot 2023.02.6编译BlueZ5的深度排错指南

当你在RV1106开发板上尝试构建支持蓝牙功能的嵌入式系统时,可能会遇到各种编译错误。本文将聚焦于使用Buildroot 2023.02.6编译BlueZ5过程中最常见的wordexp.h报错问题,提供一套完整的解决方案。

1. 环境准备与基础配置

在开始之前,确保你已经准备好以下环境:

  • 开发板型号:RV1106或RV1103
  • Buildroot版本:2023.02.6
  • 工具链:arm-rockchip830-linux-uclibcgnueabihf

首先,我们需要配置Buildroot以包含蓝牙支持:

make ARCH=arm menuconfig

在配置界面中,确保选中以下选项:

BR2_PACKAGE_BLUEZ5_UTILS=y BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y BR2_PACKAGE_BLUEZ5_UTILS_TOOLS=y BR2_PACKAGE_DBUS=y

保存配置后,开始编译:

make ARCH=arm

2. 常见编译错误分析与解决

2.1 wordexp.h头文件缺失错误

在编译过程中,你可能会遇到如下错误:

src/shared/shell.c:25:10: fatal error: wordexp.h: No such file or directory #include <wordexp.h> ^~~~~~~~~~~

问题原因

  • wordexp.h是glibc提供的头文件,用于单词扩展功能
  • RV1106开发板使用的uclibc库不包含这个头文件

解决方案

  1. 找到所有包含wordexp.h的文件:
grep -r "<wordexp.h>" .
  1. 修改这些文件中的包含路径:

将:

#include <wordexp.h>

改为:

#include <android/compat/wordexp.h>

需要修改的文件通常包括:

  • src/shared/shell.c
  • client/player.c
  • client/main.c
  • tools/btmgmt.c
  • tools/obexctl.c

2.2 WRDE_APPEND宏定义错误

解决头文件问题后,可能会遇到另一个错误:

src/shared/shell.c: In function 'cmd_exec': src/shared/shell.c:419:11: error: 'WRDE_APPEND' undeclared flags |= WRDE_APPEND; ^~~~~~~~~~~

问题原因

  • WRDE_APPEND是glibc特有的宏,uclibc中不存在
  • uclibc只支持基本的单词扩展功能

解决方案

将:

flags |= WRDE_APPEND;

改为:

flags |= WRDE_NOCMD;

3. 依赖关系与系统配置

在解决编译错误后,还需要确保系统依赖关系正确配置。使用以下命令检查依赖关系:

make graph-depends

关键依赖包

  • glib
  • dbus
  • readline
  • libffi
  • zlib
  • gettext
  • libiconv
  • expat
  • ncurses

确保这些依赖包都已正确配置并编译通过。

4. 测试与验证

成功编译后,可以在开发板上测试蓝牙功能:

  1. 启动蓝牙服务:
hciconfig hci0 up
  1. 查看蓝牙设备信息:
hciconfig -a
  1. 扫描周围蓝牙设备:
hcitool scan
  1. 低功耗蓝牙扫描:
hcitool lescan

5. 射频控制与实用工具

RV1106开发板上的蓝牙模块通常通过rfkill进行控制:

  1. 查看射频设备状态:
cat /sys/class/rfkill/rfkill0/uevent
  1. 启用蓝牙射频:
echo 1 > /sys/class/rfkill/rfkill0/state
  1. 常用蓝牙工具命令:
  • 查看连接状态:hcitool con
  • 获取信号强度:hcitool rssi <BD_ADDR>
  • 获取链路质量:hcitool lq <BD_ADDR>

6. 性能优化与精简

为了获得最佳性能,可以考虑以下优化措施:

  1. 配置精简

    • 只启用必要的BlueZ5功能
    • 禁用不需要的插件和协议支持
  2. 内存优化

    • 调整BlueZ5的缓存大小
    • 优化DBUS消息队列长度
  3. 启动加速

    • 预加载常用蓝牙服务
    • 优化初始化脚本

最终生成的文件系统可以控制在15MB以内,非常适合嵌入式应用场景。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/16 1:55:55

MySQL WITH RECURSIVE 详解

目录一、什么是 WITH RECURSIVE二、MySQL 从哪个版本开始支持&#xff1f;三、它解决了什么问题组织架构菜单系统行政区划评论回复查询所有子节点四、WITH RECURSIVE 语法结构五、递归执行过程第一步第二步第三步六、WITH RECURSIVE 的组成部分1. Anchor&#xff08;锚点&#…

作者头像 李华
网站建设 2026/6/16 1:55:27

油桶检测数据集VOC+YOLO格式458张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数)&#xff1a;458标注数量(xml文件个数)&#xff1a;458标注数量(txt文件个数)&#xff1a;458标注类别数&…

作者头像 李华
网站建设 2026/6/16 1:52:55

告别抢票焦虑!大麦网抢票神器tickets让你的演唱会门票触手可及

告别抢票焦虑&#xff01;大麦网抢票神器tickets让你的演唱会门票触手可及 【免费下载链接】tickets 大麦、大麦网 演唱会抢票软件&#xff0c;一个基于 tauri rust vue 调用接口的抢票软件。 项目地址: https://gitcode.com/gh_mirrors/ti/tickets 还在为心爱歌手的演…

作者头像 李华
网站建设 2026/6/16 1:45:58

阿里云无影Agent开发套件AgentBay对接使用完全指南

阿里云无影Agent开发套件AgentBay&#xff1a;从零到一的对接与使用完全指南 &#x1f4d6; 本文导读 第一章&#xff1a;理解AgentBay——AI Agent的云端基础设施 第二章&#xff1a;对接前的准备工作 第三章&#xff1a;MCP协议接入 第四章&#xff1a;SDK编程接入与Web…

作者头像 李华
网站建设 2026/6/16 1:32:50

【电力系统短期负荷预测】基于ELM、白鲸算法优化ELM、鹭鹰算法优化ELM极限学习机的电力系统短期负荷预测研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f447; 关注我领取海量matlab电子书…

作者头像 李华