什么是dbus
dbus就是一种进程间的通信机制,dbus主要的概念就是总线,进程注册到总线之后,就可以利用总线来进行通信了。
dbus的一些基本概念
dbus是三层架构的进程通信系统:
接口层:由libdbus提供。
总线层:由D-Bus总线守护进程提供的。总线可以分为系统总线和会话总线。
包装层:包装层一系列基于特定应用程序框架的Wrapper库。
对象:对象是封装后的匹配器与回调函数,它以对等(peer-to-peer)协议使每个消息都有一个源地址和一个目的地址。这些地址又称为对象路径,或者称之为总线名称。
消息:D-Bus的消息分为信号(signals)、方法调用(method calls)、方法返回(method returns)和错误(errors)。
服务:服务(Services)是进程注册的抽象。
什么是glib
简单的说它就是linux平台下面的一个C语言函数库。
在使用GNOME桌面环境的Linux系统中,通常用GLib库提供的函数来管理总线。
glib需要支持线程的操作系统
和字符集间转换函数iconv
的支持,事实上大多现代操作系统都有以上两项功。
GLib由五个部分组成的:
- 基础类型
- 对核心应用的支持
- 实用功能
- 数据类型
- 对象系统
基本数据类型
- 整数类型:
gint8、guint8、gint16、guint16、gint32、guint32、gint64、guint64
,不是所有的平台都提供64位整型 - 整数类型
gshort、glong、gint
和short、long、int
相同 - 布尔类型
gboolean
,可以取两个值:TRUE
和FALSE
,是常数宏 - 字符型
gchar
和char
相同 - 浮点型
gfloat、gdouble
和float、double
完全等价 - 指针
gpointer
对应于标准C的void*
gconstpointer
对应于标准C的const void*
交叉编译glib
glib依赖dbuslib, zlib, libffi, libmount, libpcre...
创建cross_file.txt,
[host_machine]
system = 'windows'
cpu_family = 'x86_64'
cpu = 'x86_64'
endian = 'little'
[properties]
c_args = []
c_link_args = []
[binaries]
c = 'x86_64-w64-mingw32-gcc'
cpp = 'x86_64-w64-mingw32-g++'
ar = 'x86_64-w64-mingw32-ar'
strip = 'x86_64-w64-mingw32-strip'
pkgconfig = 'x86_64-w64-mingw32-pkg-config'
windres = 'x86_64-w64-mingw32-windres'
执行命令编译
meson --cross-file cross_file.txt builddir
参照官方文档。