低功耗蓝牙BLE开发中GATT库的移植

本文介绍了在RaspberryPi上编译gattlib库时遇到的Python版本问题,以及如何降级Python版本以解决问题。通过安装python2,切换默认Python版本,然后安装必要的依赖,如libbluetooth-dev,进行cmake和make来成功构建gattlib。此外,还提到了动态库的添加到环境变量的步骤,以及在遇到错误时的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

        在写基于gattlib库的ble代码时,发现编译gattlib的源码和运行示例程序时总会报python线程的错,浪费了很多时间最后才发现是由于cmake编译gattlib生成so文件时,树莓派默认使用的python版本过高,应该选择低版本的python才能生成能正常运行的文件。

下面是步骤:

降级python版本

输入如下命令:

sudo apt-get install -y python2

可通过以下命令确定python2成功安装

python2 --version

因为树莓派一般默认使用python3,输入

python -V

结果一般都是python3.x.x,我们需要切换为2.x.x

切换python版本

我的办法是先给两个版本的python设定一个优先级

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 0

然后手动选择python版本:

sudo update-alternatives --config python

输入对应的序号即可 

这里我选择python2 对应的序号1,回车

 此时再次查看默认python版本

python -V

如果要换回python3的话也通过这个命令手动选择就行,并且建议在cmake完gattlib后就切换回python3。因为2020年1月1日起,Python 2 已经不再得到官方的技术支持和更新。这意味着,Python 2 不再接收安全更新和错误修复,也不再支持新功能的添加。

GATTLIB克隆

github官网网址:

https://github.com/labapart/gattlib.git

我这里用的是gitee国内镜像

git clone https://gitee.com/linchen/gattlib.git

我选择的下载位置是主目录下的Download文件夹

进入目录,就是一套连环输出,不过在此之前,应该先下载官方说的依赖避免后续问题

sudo apt install libbluetooth-dev libreadline-dev

然后

sudo mkdir build && cd build
cmake ..
make

忘了下cmake就下

sudo apt-get install -y cmake

 然后

sudo cmake ..

如果没有问题的话应该是如下图

 此时再make就大功告成:

在example文件下有例程,且在刚才已经编译好成为可执行文件了,这里直接运行一个扫描例程测试

 成功

部分安装出错和解决方案

这里容易出现许多问题,我遇到的列举部分,希望有所帮助

——如果出现这种提示下载对应的依赖,按照提示下载即可

——如果出现这个错误

把libbluetooth3 remove了,然后重新直接下载libbluetooth-dev

——需要安装glib-2.0

 

——需要doxygen的话也是下载,不过要小写

 切记在cmake时候要保证默认python版本是较低版本,否则编译出的文件不能运行。

建议先做好依赖项下载再cmake,如果cmake中途发现缺少依赖,下载对应依赖后,应该把原来的build文件夹删除,然后重新创建build文件夹,进入,再cmake

动态库添加到环境变量

 在刚才cmake 和 make 的过程中我们已经生成了后面自己编写代码时所需要的文件,其中的一些动态库so文件需要我们添加到环境变量方便使用,也可以编译时指定位置

先找到so文件的路径

sudo find / -name libgattlib.so

找到后,复制到/usr/lib 下即可,以我的为例:

sudo cp /home/pi/Downloads/gattlib/build/dbus/libgattlib.so /usr/lib

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值