dbus和glib简介

mac2024-03-26  33

什么是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

下载地址1,地址2

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

参照官方文档。

最新回复(0)