在 ubuntu 上编译 BlueZ:配置错误

Compile BlueZ on ubuntu: configure error

我尝试为 ubuntu 18.04 编译 bluez,从 here 下载最新版本 (5.50)。

configure 命令:

./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var --enable-mesh

失败消息:

...
checking for ELL... no
configure: error: ell library >= 0.3 is required

我忽略了什么是 ELL 以及为什么使用它(很高兴知道),但真正的问题是关于缺少安装依赖项以消除此错误。

我相信您需要安装嵌入式 Linux 库。

Embedded Linux Library

可能是 Microsoft 嵌入式学习库,但可能性不大。

Microsoft/ELL

如果你来这里,一个原因应该是你需要启用网状协议的 bluez。

这是对我适用于 ubuntu 18.04 和 bluez 5.50 的方法。

构建并安装 ELL

我没有找到 ELL 的打包版本,所以我从 here 下载了最新的 ELL 版本。

> tar xvf ~/Downloads/ell-0.6.tar.gz
> cd ell-0.6
> ./configure --prefix=/usr
> make
> sudo make install

构建并安装 Bluez

bluez 可从 here 下载。

> tar xvf ~/Downloads/bluez-5.50.tar.xz
> cd bluez-5.50
# install required dependencies
> sudo apt install libdbus-1-dev libudev-dev libical-dev libreadline-dev libjson-c-dev
> ./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var --enable-mesh --enable-deprecated
> make
> sudo make install

注意 1:如果需要 hcitool,请使用 --enable-deprecated,因为它在最近的 bluez 版本中已被弃用。

注意 2:在 运行 meshctl 之前确保 bluetooth 服务是 运行:

> systemctl status bluetooth

# if not running:
> systemctl start bluetooth

# if start fails with
# Failed to start bluetooth.service: Unit bluetooth.service is masked.
> systemctl unmask bluetooth