树莓派编译安装bluez协议栈,搭建bluetooth编程环境

2 篇文章 0 订阅
2 篇文章 0 订阅

树莓派3B自带蓝牙模块,笔者就想通过树莓派蓝牙模块实现数据传输的可编程化,就想在树莓派上搭建一个蓝牙编程环境。以下是笔者搭建环境所出现的一些步骤、问题及其应对方案。

bluez的安装需要手动编译,在bluez官网(http://www.bluez.org/)中找到较新版本进行下载,笔者写文章时的最新版本是5.44,找到链接后在 ~/Downloads/下输入命令

$ wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.44.tar.xz

下载到bluez源代码压缩包,执行

$ xz -d bluez-5.44.tar.xz

解压得到bluez-5.44.tar压缩包,再执行

$ tar -xvf bluez-5.44.tar

解压完成后,当前目录中就会多出来一个bluez-5.44目录,进入

$ cd bluez-5.44

ps:可以参照一下源码中附带的 README 文件,里面有大略的编译步骤,不过一些依赖包并没有给出详细的包名,需要你去一点一点探索。

首先更新一下源

$ sudo apt-get update

*** 请选择优质镜像站! ***
*** 请选择优质镜像站! ***
*** 请选择优质镜像站! ***

国内清华的源还不错,可以戳这里https://mirror.tuna.tsinghua.edu.cn/help/raspbian/,某些劣质源可能部分依赖版本跟不上,会导致一些问题,(笔者就是这样不知不觉废了几个系统

*** 一步到位安装方式: ***
按照README文件中的提示,在安装bluez的时候需要安装几个依赖

- GCC compiler
- GLib library
- D-Bus library
- udev library (optional)
- readline (command line clients)

直接安装这些依赖即可

sudo apt-get install gcc libglib2.0-dev libdbus-1-dev libdbus-c++-dev libudev-dev libical-dev libreadline-dev

在当前目录中,执行

$ ./configure --prefix=/usr --mandir=/usr/share/man \
                                --sysconfdir=/etc --localstatedir=/var

此时如果之前你没有安装过的话,可能会提示你安装一些依赖

  1. 如果提示
configure: error: GLib >= 2.28 is required

安装libglib2.0-dev即可

$ sudo apt-get install libglib2.0-dev

如果出现类似

The following packages have unmet dependencies
libglib2.0-dev : Depends: libglib2.0-0 (= 2.33.12+really2.32.4-5) but 2.42.1-1 is to be installed
                  Depends: libglib2.0-bin (= 2.33.12+really2.32.4-5) but 2.42.1-1 is to be installed
                  Depends: libpcre3-dev (>= 8.11) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

解决方法是降级安装这些依赖项,即执行

sudo apt-get install libglib2.0-0=2.33.12+really2.32.4-5 libglib2.0-bin=2.33.12+really2.32.4-5 libpcre3=1:8.30-5 libpcre3-dev

***注意⚠️:简单来说,遇到这种情况不要试图去直接安装这些包,系统会提示无法安装,需要你指定安装的版本,这样才能正常安装,包的版本可以直接填写该依赖需要的版本,即括号里面提示的版本号。不过遇到这种情况,请关注一下是不是你的源有问题,可以尝试先换成官方源。 ***
安装好依赖项之后就可以继续安装libglib2.0-dev了,完成后请重试configure的那条命令。

  1. 如果提示
configure: error: D-Bus >= 1.6 is required

安装libdbus-1-dev 和 libdbus-c++-dev 即可解决,执行

$ sudo apt-get install libdbus-1-dev libdbus-c++-dev

如果也出现依赖未被安装的问题,可以按照第一条的解决方案,下同。

  1. 如果出现
configure: error: libudev >= 172 is required

直接安装 libudev-dev 即可

$ sudo apt-get install libudev-dev
  1. 如果是
configure: error: libical is required

安装 libical-dev 即可

$ sudo apt-get install libical-dev
  1. 如果是
configure: error: readline header files are required

安装 libreadline-dev 依赖即可

$ sudo apt-get install libreadline-dev

如果没有任何报错,那么配置应该生成好了,接下来编译安装即可,直接在当前目录下执行:

sudo make  && sudo make install

等运行完毕,bluez协议栈就安装好了。

可以安装 libbluetooth-dev

sudo apt-get install libbluetooth-dev

然后在C程序中编写蓝牙程序。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值