版权所有 (C) 2000-2001 Qualcomm Incorporated 版权所有 (C) 2002-2003 Maxim Krasnyansky [email protected] 版权所有 (C) 2002-2010 Marcel Holtmann [email protected]
要编译蓝牙实用程序,你需要以下软件包: - GCC 编译器 - GLib 库 - D-Bus 库 - udev 库(可选) - readline(命令行客户端)
在基于 Debian 的系统上,可以通过运行以下命令来完成:
sudo apt-get build-dep bluez
./bootstrap
要配置,请运行:
./configure --prefix=/usr --mandir=/usr/share/man
--sysconfdir=/etc --localstatedir=/var
配置过程会自动搜索所有必需的组件和软件包。
要编译并安装,请运行: make && make install
为了编译 mesh 支持和测试客户端工具,需要存在 Embedded Linux 库的开发版本。开发仓库可以在以下位置找到:
git://git.kernel.org/pub/scm/libs/ell/ell.git
https://kernel.googlesource.com/pub/scm/libs/ell/ell.git
构建系统要求 Embedded Linux 库的源代码与源代码位于相同的顶级目录中:
.
|--- ell
| |--- ell
| `--- unit
`--- bluez
|--- src
`--- tools
不需要单独构建或安装 Embedded Linux 库。构建将在编译二进制文件时自动进行,然后会内部链接。
当使用 --enable-external-ell 构建选项时,不要求 Embedded Linux 库的源代码位于顶级目录中。
如果既未指定 --enable-mesh 也未指定 --enable-btpclient,那么这部分内容无关紧要,也不需要 Embedded Linux 库。
Mesh 守护进程使用内核提供的加密工具来执行蓝牙 Mesh 所需的安全功能。目前许多标准发行版都启用了所有必需的加密功能,但少数知名的发行版并未启用。
如果 Mesh 加密无法正常工作,则可能需要启用以下配置选项,并重新构建内核。
至少需要内核版本 4.9 或更高版本。
内核至少必须启用以下 .config 选项: CONFIG_CRYPTO_USER CONFIG_CRYPTO_USER_API CONFIG_CRYPTO_USER_API_AEAD CONFIG_CRYPTO_USER_API_HASH CONFIG_CRYPTO_USER_API_SKCIPHER
CONFIG_CRYPTO_AES CONFIG_CRYPTO_CCM CONFIG_CRYPTO_AEAD CONFIG_CRYPTO_CMAC
为了构建一个可用的系统,需要启用某些配置选项:
--enable-library
启用蓝牙库的安装
默认情况下不再安装蓝牙库。
用户界面或命令行工具不再需要安装蓝牙库。此选项是为仍然依赖该库的遗留第三方应用程序提供的。
当启用库安装时,最好为它使用单独的 bluez-library 或 libbluetooth 软件包。
--disable-tools
禁用对蓝牙实用程序的支持
默认情况下,蓝牙实用程序会被构建并安装。对于生产系统来说,这些工具不是必需的,此选项允许禁用它们以节省构建时间和磁盘空间。
当选择构建这些工具时,最好为它们使用单独的 bluez-tools 软件包。
--disable-cups
禁用对 CUPS 打印机后端的支持
默认情况下,CUPS 的打印机后端会被构建并安装。对于不需要通过蓝牙打印的系统,此选项允许禁用该功能。
当选择构建 CUPS 后端时,最好为它使用单独的 bluez-cups 软件包。
--disable-monitor
禁用对蓝牙监视器工具的支持
默认情况下,监视器工具是启用的。它提供 HCI 级别的跟踪和调试支持。对于不需要任何跟踪或调试功能的系统,此选项允许禁用该工具。
监视器工具应与守护进程一起放在主软件包中。它具有普遍的用途。
--disable-client
禁用对命令行客户端的支持
默认情况下,命令行客户端处于启用状态,并使用 readline 库。对于通过其他方式配置 BlueZ 的特定系统,可以禁用命令行客户端,从而去除对 readline 的依赖。
客户端应与守护进程一起放在主软件包中。它具有普遍的用途。
--disable-systemd
禁用与 systemd 的集成
默认情况下,与 systemd 的集成是启用并安装的。这提供了对所有基于 systemd 的发行版的最佳集成。
此选项是为不支持 systemd 的发行版提供的。在这种情况下,与 init 系统的所有集成都由软件包负责。
--disable-a2dp
禁用 A2DP 配置文件
默认情况下,bluetoothd 使用内置插件支持 A2DP 配置文件,此选项可禁用它。
此选项是为没有任何音频功能的发行版提供的。
--disable-avrcp
禁用 AVRCP 配置文件
默认情况下,bluetoothd 使用内置插件支持 AVRCP 配置文件,此选项可禁用它。
此选项是为没有任何音频功能的发行版提供的。
--disable-network
禁用 PANU、NAP、GN 配置文件
默认情况下,bluetoothd 使用内置插件支持 PANU、NAP 和 GN 配置文件,此选项可禁用它。
此选项是为没有任何网络功能的发行版提供的。
--disable-hid
禁用 HID 配置文件
默认情况下,bluetoothd 使用内置插件支持 HID 配置文件,此选项可禁用它。
此选项是为没有任何输入功能的发行版提供的。
--disable-hog
禁用 HoG 配置文件
默认情况下,bluetoothd 使用内置插件支持 HoG 配置文件,此选项可禁用它。
此选项是为没有任何输入功能的发行版提供的。
--enable-testing
启用测试工具
默认情况下,仅用于测试仿真的工具处于禁用状态。此选项可用于启用它们。
不建议在生产系统上启用此选项。这些工具可能包含依赖特定环境或仍在开发中的内核功能的测试。
--enable-experimental
启用实验性工具
默认情况下,所有仍在开发中的工具均处于禁用状态。此选项可用于启用它们。
不建议在生产系统上启用此选项。实验性工具的行为不稳定,可能仍会发生变化。
--enable-deprecated
启用已弃用的工具
默认情况下,所有不再维护的工具均处于禁用状态。此选项可用于启用它们。
不建议在生产系统上启用此选项。已弃用工具的行为可能不稳定,或者根本无法工作。
--enable-external-plugins
启用对外部插件的支持
默认情况下,不支持 bluetoothd 和 obexd 的外部插件,因此它们处于禁用状态。
外部插件需要访问上述守护进程中内部的、未记录的且未版本化的 API。因此,它们随时可能失效。如果你有这样的插件,请启用此选项,并积极与社区合作,使该插件成为上游 bluez 项目的一部分。
--enable-nfc
此选项启用 NFC 配对支持。
默认情况下,与 neard 的集成处于禁用状态,此选项允许在支持 neard 的系统中启用它。
该插件已内置于 bluetoothd,因此不需要单独打包。
--enable-midi
此选项通过 ALSA Sequencer 启用 MIDI 支持。
默认情况下,midi 插件处于禁用状态,因为它仍被视为实验性功能。启用时,bluetoothd 将为每个连接的、支持 MIDI GATT 主服务的设备创建一个新的 ALSA Sequencer 客户端和端口。
该插件已内置于 bluetoothd,因此不需要单独打包。
有关在向 BlueZ 贡献代码时使用 AI 工具的指南,请参阅: doc/coding-assistants.rst
邮件列表: [email protected]
关于该项目的更多信息,请访问 BlueZ 网站: http://www.bluez.org