选择跨发行版 DBus 实现

Posted

技术标签:

【中文标题】选择跨发行版 DBus 实现【英文标题】:Choosing cross-distro DBus implementation 【发布时间】:2019-04-20 13:10:35 【问题描述】:

我正在尝试编写一个 systemd 守护程序,它应该在 SDP 中注册新服务、侦听 RFCOMM 连接并与其他蓝牙设备交换一些信息。守护程序应尽可能独立于发行版。因为我想使用 BlueZ5,所以我需要使用 DBus(这对我来说是新的)。

所以我的问题来了,选择 GDBus 会让我的守护进程只在安装了 GNOME 的系统上运行吗?或者类似地,QtDBus 是否只适用于 KDE?如果是,我应该怎么做才能在多个发行版上运行它?

【问题讨论】:

IMO glib、gio 库是任何桌面发行版中的最小依赖项。所以开发基于GDbus的蓝牙应用对于任何桌面来说应该都不是问题。你可以在这里找到一些例子:gist.github.com/parthitce 和细节在这里:linumiz.com 【参考方案1】:

来自freedesktop wiki

低级 libdbus 参考库没有必需的依赖项; 参考总线守护程序唯一需要的依赖项是 XML 解析器 (外籍人士)。特定于特定框架(Qt, GLib、Java、C#、Python 等)添加更多的依赖项,但可以使更多 假设,因此使用起来更简单。绑定进化 与底层的libdbus分开,所以有些比较成熟 ABI-比其他人稳定;检查您计划绑定的文档 使用。

因此您可以随心所欲地独立于平台。

Parthiban 在 cmets 中的建议可能是您最好的选择,因为即使是 libdbus 开发人员也推荐 GDBus 作为更好的选择。

您可以在here 找到一个很好的选项概述。

【讨论】:

你是对的。但是使用 libdbus 意味着 如果你直接使用这个低级 API,你注册会有些痛苦(复制自 dbus.freedesktop.org/doc/api/html 尼尔的回答很好。您可以在此处找到有关不同 D-Bus 客户端库之间差异的更多详细信息:***.com/a/44696835/2931197。

以上是关于选择跨发行版 DBus 实现的主要内容,如果未能解决你的问题,请参考以下文章

2019年10个最佳Linux发行版,你用过几个?如何选择适合自己的?

Hadoop入门扫盲:hadoop发行版介绍与选择

2016:如何选择 Linux 发行版

kde做得最好的linux发行版是哪个

国内的用户一般用啥Linux发行版?

Hadoop发行版本之间的区别