
glib
文章平均质量分 88
andylauren
嵌入式爱好者
展开
-
gdbus使用G_BUS_TYPE_SYSTEM做开机自启服务
gdbus使用G_BUS_TYPE_SYSTEM做开机自启服务原创 2023-11-30 10:20:17 · 511 阅读 · 0 评论 -
glib-2.78.0交叉编译
如果你是编译2.6之前的版本,需要使用configure进行编译配置,对于依赖的库需要自己进行源码下载和交叉编译,编译glib依赖libffi、zlib、以及libpcre,也就是在编译glib之前需要交叉编译libffi、zlib、以及libpcre。此时你就拥有了meson,现在已经可以进行编译,但是如果直接敲meson会调用Ubuntu安装的meson,python下载的meson在~/.local/bin/meson目录下,你或者直接把这个替换系统的,或者编译时敲全路径。原创 2023-10-27 09:53:05 · 1535 阅读 · 0 评论 -
Glib学习(29) gdbus 的peer to peer简单例子
Peer2Peer模式:这种模式一般称之为点对点的星型结构,Client与Server之间是直接的Peer2Peer的连接,少了DBus Daemon的中转,因此性能较好。server结构//创建loop,不运行pLoop = g_main_loop_new(NULL, FALSE);//创建skeletonpSkeleton = rtplay_gdbus_example_skeleton_new();//获得guid_guid = g_dbus_generate_guid();//创原创 2020-12-11 14:27:56 · 1286 阅读 · 0 评论 -
Glib学习(28) gdbus最简单的例子
官方文档:https://developer.gnome.org/gio/stable/DBus的通信机制是Server-Client模式,Server需要提供一个XML(eg: cn.RTplay.Gdbus.Example.xml)文档给Client端去说明DBus Server提供的interface name、signal name及它的arg name、 type、 direction、method name及它的arg name、 type、 direction。本例程代码:https:原创 2020-05-21 15:38:57 · 5474 阅读 · 5 评论 -
Glib学习(27) dbus编译
最近想学习gdbus,gdbus是对dbus的一种封装,能够更好的使用dbus。DBUS是一种高级的进程间通信机制。DBUS支持进程间一对一和多对多的对等通信,在多对多的通讯时,需要后台进程的角色去分转消息,当一个进程发消息给另外一个进程时,先发消息到后台进程,再通过后台进程将信息转发到目的进程。DBUS后台进程充当着一个路由器的角色。DBUS中主要概念为总线,连接到总线的进程可通过总线接收或传递消息,总线收到消息时,根据不同的消息类型进行不同的处理。https://blog.youkuaiyun.com/yishu原创 2020-05-19 13:55:03 · 1757 阅读 · 0 评论 -
Glib学习(26) meson编译glib
从2.59.1版本开始去掉了autoconfig编译工具,改为使用meson构建工程。meson是用Python语言开发的构建工具。Meson 旨在开发最具可用性和快速的构建系统。提供简单但强大的声明式语言用来描述构建。原生支持最新的工具和框架,如 Qt5 、代码覆盖率、单元测试和预编译头文件等。利用一组优化技术来快速变异代码,包括增量编译和完全编译。我体会到使用meson的一个优点是当工程依赖一些库没有时,meson可以到git上自动下载并帮你安装,相比config要好。下面我们来开始进行glib的原创 2020-05-18 16:08:56 · 4848 阅读 · 0 评论 -
Glib学习(16) 字符串函数 String Utility Functions
glib源码下载:http://ftp.gnome.org/pub/gnome/sources/glib/glib帮助文档:https://developer.gnome.org/glib/本节主要讲述字符串函数,绝大部分函数在标准库中都能找到,或者简单几句话就能实现,这里只提供翻译部分,例程不提供了,需要的时候可以参考标准库函数实现。gchar * g_strdup ()复制一个字符串。 如果s...原创 2018-02-27 08:43:05 · 8531 阅读 · 0 评论 -
Glib学习(18) 基于二叉树的队列 Sequences
glib源码下载:http://ftp.gnome.org/pub/gnome/sources/glib/glib帮助文档:https://developer.gnome.org/glib/本节主要讲解一下Sequences-序列,这个序列的实现是基于二叉树,所以在查找的效率上是非常高的,而且有非常丰富的基于迭代器的函数。我把函数使用谷歌翻译了一下,没有仔细校验,因为英语是在太差,而且原创 2018-04-30 17:37:50 · 2552 阅读 · 0 评论 -
Glib学习(19) 内存分配 Memory Allocation
glib源码下载:http://ftp.gnome.org/pub/gnome/sources/glib/glib帮助文档:https://developer.gnome.org/glib/本节主要讲解一下Memory Allocation函数,基本就是linux系统函数的封装,我把函数使用谷歌翻译了一下,没有仔细校验,因为英语是在太差,而且函数基本差不多,懂了一个就能举一反三。基本都是实际...原创 2019-04-28 13:33:01 · 7661 阅读 · 0 评论 -
Glib学习(20) 内存片 Memory Slices
glib源码下载:http://ftp.gnome.org/pub/gnome/sources/glib/glib帮助文档:https://developer.gnome.org/glib/本节主要讲解一下Memory Allocation函数,基本就是linux系统函数的封装,我把函数使用谷歌翻译了一下,没有仔细校验,因为英语是在太差,而且函数基本差不多,懂了一个就能举一反三。基本都是实际...原创 2019-04-28 16:27:31 · 2678 阅读 · 0 评论 -
Glib学习(21) 动态加载模块 Dynamic Loading of Modules
glib源码下载:http://ftp.gnome.org/pub/gnome/sources/glib/glib帮助文档:https://developer.gnome.org/glib/本节主要讲解一下Memory Allocation函数,基本就是linux系统函数的封装,我把函数使用谷歌翻译了一下,没有仔细校验,因为英语是在太差,而且函数基本差不多,懂了一个就能举一反三。Incl...原创 2019-04-28 16:52:09 · 2436 阅读 · 0 评论 -
Glib学习(22) 主事件循环 The Main Event Loop
glib源码下载:http://ftp.gnome.org/pub/gnome/sources/glib/glib帮助文档:https://developer.gnome.org/glib/主事件循环 - 管理所有可用的事件源Includes#include <glib.h>描述主事件循环管理GLib和GTK +应用程序的所有可用事件源。 这些事件可以来自任意数量的不同...原创 2019-06-06 14:45:35 · 7813 阅读 · 4 评论 -
Glib学习(23) IO通道 IO Channels
glib源码下载:http://ftp.gnome.org/pub/gnome/sources/glib/glib帮助文档:https://developer.gnome.org/glib/IO通道 - 可移植的支持使用文件,管道和套接字Includes#include <glib.h>描述GIOChannel数据类型旨在提供一种可移植的方法,用于使用文件描述符,管...原创 2019-06-06 16:45:14 · 5701 阅读 · 0 评论 -
Glib学习(24) Base64编解码 Base64 Encoding
glib源码下载:http://ftp.gnome.org/pub/gnome/sources/glib/glib帮助文档:https://developer.gnome.org/glib/以Base64格式对数据进行编码和解码Includes#include <glib.h>#include <glib/gi18n.h>描述Base64是一种编码,...原创 2019-07-01 15:53:27 · 1509 阅读 · 0 评论 -
Glib学习(25) 数据校验和 Data Checksums
glib源码下载:http://ftp.gnome.org/pub/gnome/sources/glib/glib帮助文档:https://developer.gnome.org/glib/Includes#include <glib.h>#include <glib/gi18n.h>描述GLib提供了一个通用API,用于计算任意字节序列的校验和(或“摘要...原创 2019-07-03 16:59:51 · 843 阅读 · 0 评论 -
Glib学习(17) Key-value文件解析器 Key-value file parser
glib源码下载:http://ftp.gnome.org/pub/gnome/sources/glib/glib帮助文档:https://developer.gnome.org/glib/本节主要讲解Key-value文件解析器,可以轻松的帮我们实现配置文件的解析,类似于.ini文件的解析。Includes#include <glib.h>#include <glib/gpri...原创 2018-03-11 08:24:48 · 5335 阅读 · 3 评论 -
Glib学习(13) 警告和断言 Warnings and Assertions
glib源码下载:http://ftp.gnome.org/pub/gnome/sources/glib/glib帮助文档:https://developer.gnome.org/glib/首先将翻译贴上g_print ()通过打印处理程序输出格式化的消息。 默认的打印处理程序只是将消息输出到stdout,而不添加尾随的换行符。 通常,格式应该以自己的换行符结束。g_print...原创 2018-02-07 19:54:49 · 3992 阅读 · 0 评论 -
Glib学习(15) 线程之间的异步通信 Asynchronous Queues
glib源码下载:http://ftp.gnome.org/pub/gnome/sources/glib/glib帮助文档:https://developer.gnome.org/glib/本节主要讲述线程间异步通信,实现原理就是用线程锁和队列实现的线程异步队列。描述通常你需要在不同的线程之间进行通信。 一般来说,不要通过共享内存来做这件事,而应该通过明确的消息传递。 这些消息对于多线程应用程序只...原创 2018-02-11 21:00:48 · 7580 阅读 · 0 评论 -
Glib学习(2) 双向链表 Doubly-Linked Lists
首先贴出来glib库的帮助文档网址http://web.mit.edu/barnowl/share/gtk-doc/html/glib/glib-Doubly-Linked-Lists.html#g-list-find由于双向链表与单向链表的很多函数功能和名称都是一样的,这里对一些函数就不细说了,具体有什么不了解的可以通过上面给的网址了解。函数先说一下双向链表的结构原创 2016-05-09 23:11:35 · 2511 阅读 · 0 评论 -
Glib学习(4) 哈希表 Hash Tables
先上说明文档网址:http://web.mit.edu/barnowl/share/gtk-doc/html/glib/glib-Hash-Tables.html散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数原创 2016-05-12 22:03:30 · 6407 阅读 · 0 评论 -
Glib学习(0) 第一课 g_printf的helloworld
在安装中也是使用的helloworld做的测试,这里就简单的写一下大概过程,首先需要创建一个hello.c的文件,文件内容就是#include #include intmain(int agrc, char **argv){ g_printf("Hello world!\n"); return 0;}然后就是最简单的带库的编译linux@ubuntu:原创 2016-05-08 16:58:36 · 5891 阅读 · 0 评论 -
Glib学习(5) 字符串 Strings
先上说明文档网址:http://web.mit.edu/barnowl/share/gtk-doc/html/glib/glib-Strings.html学过面向对象语言的同学一定都知道String类,一定知道这个类对字符串的操作是多麽的方便,但是c语言中是没有这个类,甚至没有类的概念,但是glib帮我们做的这个“类” GString除了使用gchar *进行字符串处理以原创 2016-05-14 16:45:16 · 5989 阅读 · 0 评论 -
Glib学习(6) 动态数组 Arrays
先上说明文档网址:http://web.mit.edu/barnowl/share/gtk-doc/html/glib/glib-Arrays.htmlglib库中的数组GArray类型很像C++标准容器库中的vector容器。GArray 可以存放任意类型的元素,并且大小随着元素的增加可以自动增长。先来结构体定义GArraytypedef struct {原创 2016-05-15 20:45:36 · 2980 阅读 · 0 评论 -
Glib学习(7) 动态指针数组 Pointer Arrays
先上说明文档网址:http://web.mit.edu/barnowl/share/gtk-doc/html/glib/glib-Pointer-Arrays.html没有什么可以多说的,因为他和动态数组太像了,如果已经会使用动态数组的话学习这个数据类型就没有一点压力。结构体定义:GPtrArraytypedef struct { gpointer *pda原创 2016-05-16 21:38:37 · 4180 阅读 · 0 评论 -
Glib学习(1) 单链表 Singly-Linked Lists
http://web.mit.edu/barnowl/share/gtk-doc/html/glib/index.html原创 2016-05-08 17:31:35 · 2382 阅读 · 0 评论 -
Glib学习(8) 动态字节数组 Byte Arrays
先上说明文档网址:http://web.mit.edu/barnowl/share/gtk-doc/html/glib/glib-Byte-Arrays.html动态字节数组和前两个动态数组一样,只不过是用来存储字节数据的,这个数组的功能很像strings,和他的区别就是这个字节数组有处理二进制数据的能力,strings一般用来处理ascii字符,所以字节数组并不会以0作为结尾,这个特原创 2016-05-16 23:50:48 · 2995 阅读 · 0 评论 -
Glib学习(9) 平衡二叉树 Balanced Binary Trees
平衡二叉树(Balanced Binary Tree)又被称为AVL树且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。构造与调整方法 平衡二叉树的常用算法有红黑树、AVL、Treap等。 最小二叉平衡树的节点的公式如下 F(n)=F(n-1)+F(n-2)+1 这个类似于一个递归的数列,可以参考Fibonacci数列,1原创 2016-05-17 10:23:14 · 1751 阅读 · 0 评论 -
Glib学习(10) 关系和元组 Relations and Tuples
说明文档网址:http://web.mit.edu/barnowl/share/gtk-doc/html/glib/glib-Relations-and-Tuples.html关系:类似数据库,不过目前只限两个字段元组:也类似数据库,不过只是关系返回的每条记录结构体:GTuplestypedef struct { guint len;} GTupl原创 2016-05-17 18:40:57 · 863 阅读 · 1 评论 -
ubuntu完整安装glib心得
学习完数据结构,感觉对数据的存储有了一种新的认识,在动态内存的基础上,链表有了绝对的灵活性,可以给未知长度的数据处理带来方便,但是在不停的写代码的过程中,感觉到了深深的仇恨,每次要实现功能,几乎源代码都有改动,也就是说每个使用链表的方法几乎都不一样,这就对自己编写的链表、队列、和栈的函数维护成本增加,甚至N天以后不知道每个版本的实际差别。 这是我就在想是不是linux能够提供现成的链原创 2016-05-08 16:53:35 · 43740 阅读 · 5 评论 -
Glib学习(11) 随机数 Random Numbers
glib相关网址:https://developer.gnome.org/glib/可以下载到源码和帮助文档结构体:typedef struct _GRand GRand;功能函数:voidg_rand_set_seed ()voidg_rand_set_seed_array ()#define原创 2018-01-30 22:49:13 · 2863 阅读 · 0 评论 -
Glib学习(12) 线程池 Thread Pools
glib源码下载:http://ftp.gnome.org/pub/gnome/sources/glib/glib帮助文档:https://developer.gnome.org/glib/首先将翻译贴上描述有时候,你希望异步分出工作的执行,并继续在你自己的线程中工作。如果这种情况经常发生,每次启动和销毁线程的开销可能太高。在这种情况下,重用已经启动的线程似乎是一个好主意。确实原创 2018-02-03 09:03:39 · 6948 阅读 · 0 评论 -
Glib学习(14) 线程 Threads
glib源码下载:http://ftp.gnome.org/pub/gnome/sources/glib/glib帮助文档:https://developer.gnome.org/glib/本节包括可移植支持线程,互斥锁,锁,条件和线程私有数据描述线程几乎像进程一样行事,但与进程不同,一个进程的所有线程共享相同的内存。 好处是它通过这个共享内存提供了相关线程之间的简单通信,但是缺点是如果程序没有经...原创 2018-02-10 23:14:51 · 7380 阅读 · 0 评论 -
Glib学习(3) 双端队列 Double-ended Queues
在数据结构中两种重要的类型就是队列和栈,而什么又是双端队列呢?双端队列是一个限定插入和删除操作的数据结构,具有队列和栈的性质。(deque,全名double-ended queue)是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。也就是说双端队列是队列和栈的集合,通过规则来灵活的实现队列和栈的功能。下面还是先贴出来原创 2016-05-10 22:20:26 · 2705 阅读 · 0 评论