glib和gllibc區別

2024-05-28 07:32
文章标签 區別 glib gllibc

本文主要是介绍glib和gllibc區別,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

轉載自http://dpinglee.blog.163.com/blog/static/144097753201071831042845/

 

glib不是gllibc,尽管两者都是基于(L)GPL的开源软件。但这一字之差却误之千里,glibc是GNU实现的一套标准C的库函数,而glib是gtk+的一套函数库。在linux平台上,像其它任何软件一样,glib依赖于glibc。

glib不是一个学院派的东西,也不是凭空想出来的,完全是在开发gtk+的过程中,慢慢总结和完善的结果。如果你是一个工作3年以上的C语言程序员,现在让你讲讲写程序的苦恼,你可能有很多话要说,但如果你有时间研究一下glib,你会发现,很多苦恼已不再成其为苦恼,glib里很多东西正是你期望已经久的。 

gobject是glib的精粹,glib是用C实现的,但在很大程序是基于面向对象思想设计的,gobject是所有类的基类。signal在其中也是一大特色,signal与操作系统中的signal并不一样,它是类似消息一样的东西,让消息在各个对象间传递,但尽量降低对象间的耦合。仔细读一下它的代码,唯一想说的话就是“绝!”。

   发现很多人没有搞清楚这两个东西(我刚刚接触的时候也没有弄清楚).有个错误的观点:认为Glib是GNU的东东.(因为前面那个"g"),而Glibc是Glib的一个子集.
    其实,Glib和Glibc基本上没有太大的联系,可能唯一的共同点就是他们都是UNIX下C编程调用的库而已. Glib是GTK+调用的底层核心库.(GTK+由开发GIMP的一些工具包集合发展而来).GIMP和Gnome这样的图形界面程序都是基于GTK+的.
    大家都知道C本身缺少数据结构,和一些重要的处理函数,C本身最复杂的数据结构也就是数组了.那么当你需要一个数据结构的话就自己得定义.幸好前人已经帮我们完成这个工作.他们把这写常用的数据结构和处理方法包装成一个库.其中之一就是Glib了.Glib中 定义了很多有用的数据结构.如数组(长度可变),单(双)向链表,hash表,队列,还有关系(学过关系型数据库的都应该知道这个概念).一些常用的处理 方法如:字符串的处理,标准输出(g_print等),错误输出,日志记录,为了portable而定义的一些基本数据类型(gint,gchar, guint等)极其他们的限制,还有事件循环,线程,IO操作等.

 


用GLib2.*编写的应用程序,在编译时应该在编译命令中加入`pkg-config -cflags -libs glib-2.0`,如编译一个名为hello.c的程序,输出名为hello的可执行文件,则命令为:gcc `pkg-config -cflags -libs glib-2.0` hello.c -o hello 
在GLIB中将线程(gthread),插件(gmoudle)和对象系统(gobject)这三个子系统区别对待,编译时要注意加入相应的参数。
如程序中用到对象系统,编译时就应加入:`pkg-config --cflags --libs gobject-2.0`
用到线程,编译时则加入:`pkg-config --cflags --libs gthread-2.0`
用到插件,编译时则加入:`pkg-config --cflags --libs gmoudle-2.0`

基础类型
GLib的基础是由基础类型、范围限定宏、标准宏、类型转换宏、字节次序变换宏、数学常数定义和杂项宏等各项组成的。这里主要介绍基础类型,因为它们遍及与GLIB相关的各种程序库和软件包中,如GTK+,GNOME,MONO等大的开源项目。
基础类型又称标准类型,GLib将C语言中的数据类型统一封装成自己的数据类型,均以小写字母'g'开头,如:gpointer是指针类型(void *)、guint是无符号整型(unsigned int)等,其中有一些是修饰性的,如:gint、gchar等,它们和C语言中的int、char是完全相同的。这些数据类型使用起来和C语言中的数据类型完全一样,当你熟悉了以后会发现它们的使用方法更灵活,更直观也更易于理解一些。当然你可以把C语言中的数据类型直接拿来使用,这丝毫不影响你编写程序的编译。
另外范围限定宏和类型转换宏也较常用,如G_MAXINT表示最大的int型值,用宏GINT_TO_POINTER(i)将整型变量i转换为指针型,宏GPOINTER_TO_INT(p)将指针型变量p转换为整型。
逻辑类型gboolean的值TRUE和FALSE是在常数宏中定义的,另外还包括G_E表示自然对数,G_PI表示圆周率,G_PI_2表示圆周率的1/2等一些数学常数。

这篇关于glib和gllibc區別的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1009922

相关文章

GLib库对核心应用的支持

代码: /** main.c** Created on: 2024-6-19* Author: root*/#include <glib.h> // 包含GLib函数库static GMutex *mutex = NULL;static gboolean t1_end = FALSE; // 用于结束线程1的标志static gboolean t2_end =

Glib在windows+vs2013编译

欢迎关注公众号可以查看更多完整文章   Glib下载地址:ftp://ftp.gnome.org/pub/gnome/sources/glib/2.48/,下载2.48.2或者最新版本。在build/win32下面打开一个解决方案。 需要包含PCRE的源码,PCRE源码下载:PCRE在windows+VS2013编译_GreenArrowMan-CSDN博客-CSDN博客 将下载的

GResource glib-compile-resources

glib-compile-resources 程序 --generate-header 生成源码头文件--generate-source 生成用于将资源文件链接到您代码的源代码 分两步运行,不能一起使用。很是无语。。

動態代理IP與靜態代理IP的區別

代理IP廣泛應用於隱私保護、網路加速、訪問受限內容等場景。其可以分為動態代理IP和靜態代理IP兩種類型。瞭解它們的區別有助於我們根據具體需求選擇合適的代理。 動態代理IP 動態代理IP是指IP地址會定期或不定期地更換的代理服務。這種類型的代理通常由服務提供商自動切換,用戶無需手動操作。動態代理IP服務提供商擁有大量的IP地址池,當用戶連接到代理伺服器時,系統會隨機分配一個IP地址。在一定時間或

【GLib】GLib学习笔记(三):gtypes、garray、gerror、goption

1、类型:glib/gtypes.h 1.1 基本类型; typedef char gchar;typedef short gshort;typedef long glong;typedef int gint;typedef gint gboolean;typedef unsigned char guchar;typedef unsigned short g

【GLib】GLib学习笔记(二):源码编译

一、源码下载 http://ftp.acc.umu.se/pub/GNOME/sources/glib/ 本人下载是最新版本(截至2020-08-26):glib-2.65.2.tar.xz 二、安装依赖 1、安装依赖库 sudo apt install cmakesudo apt install zlib1g-devsudo apt install mesonsudo apt

编译-glib交叉编译

glib是一个C语言函数库,它对很多系统调用进行了封装,提供了很多实用的功能,能极大地方便编程。         为了在产品上尝试使用glib,需要对glib进行交叉编译,使其能在ARM9上运行。 以下是版本信息:         开发平台:Linux ubuntu 3.8.0-35-generic #52~precise1-Ubuntu SMP         PC gc

ARM平台移植libffi zlib libiconv gettext glib gstreamer等库

起初想在Ubuntu16.04中的QT5.9实现音视频播放,代码编译很简单,但实现音视频解码播放却很麻烦,为了实现QtMultimedia类相关的音视频播放,需要移植gstreamer库,实现编解码功能。 Ubuntu16.04当中直接下载相应的gstreamer安装包即可。 以下主要介绍ARM平台实现gstreamer1.0的移植。 自己新建空文件夹 mkdir gstream1.0m

GLIB 安装手记

http://bluesilence.blogchina.com/ http://www.sudu.cn/info/html/edu/20080424/300468.html第一个GLIB第二个ATK第三个CAIRO第四个PANGO(安装指令统一为:./configure --prefix=/usr && make && make install)第五个GTK安装GTK的时候参数参考http:

Linux运维_Bash脚本_编译安装Glib-2.78.4

Linux运维_Bash脚本_编译安装Glib-2.78.4 Bash (Bourne Again Shell) 是一个解释器,负责处理 Unix 系统命令行上的命令。它是由 Brian Fox 编写的免费软件,并于 1989 年发布的免费软件,作为 Sh (Bourne Shell) 的替代品。 您可以在 Linux 和 MacOS 机器上使用 Bash,甚至可以通过适用于 Linux 的