一、简述与配置
GLib是一个跨平台的、用C语言编写的库,起初是GTK+的一部分,但到了GTK+第二版,开发者决定把跟图形界面无关的代码分开,这些代码于是就组装成了GLib。因为GLib具有跨平台特性,所以用它编写的程序可以无需进行大幅度修改就可以在其他程序上编译和运行。
glib库是Linux平台下最常用的C语言函数库,它具有很好的可移植性和实用性。
glib是Gtk +库和Gnome的基础。glib可以在多个平台下使用,比如Linux、Unix、Windows等。glib为许多标准的、常用的C语言结构提供了相应的替代物。
如果在程序中要使用到glib库中的函数,则应该包含glib.h头文件(在gtk.h和gnome.h头文件中已经包含了glib.h了)
1、Freebsd中安装glib
cd /usr/ports/devel/glib20
portsnap fetch extract
Looking up portsnap.FreeBSD.org mirrors... 7 mirrors found.
Fetching snapshot tag from isc.portsnap.freebsd.org... done.
Fetching snapshot metadata... done.
Updating from Fri Dec 6 11:20:31 CST 2013 to Mon Dec 23 21:23:19 CST 2013.
Fetching 4 metadata patches... done.
Applying metadata patches... done.
Fetching 4 metadata files... gunzip: (stdin): unexpected end of file
metadata is corrupt.
root@dp:/usr/ports/devel/glib20 # ls
Makefile distinfo files pkg-descr pkg-plist
root@dp:/usr/ports/devel/glib20 # make install clean
===> License LGPL20 accepted by the user
===> Found saved configuration for glib-2.36.3
===> Fetching all distfiles required by glib-2.36.3 for building
===> Extracting for glib-2.36.3
=> SHA256 Checksum OK for gnome2/glib-2.36.3.tar.xz.
===> Patching for glib-2.36.3
===> glib-2.36.3 depends on package: libtool>=2.4 - found
===> Applying FreeBSD patches for glib-2.36.3
..........................
..........................
2、windows下配置与安装
3、测试:
Linux/unix下测试,以freebsd为例
首先看一下下面这个程序,在编辑器中输入下面程序,程序首先创建20个1-100以内的随机数,并显示在屏幕,然后计算30000000次累加,并输出计算用的时间。
#include <glib.h>
int main(int argc, char *argv[])
{
GRand *rand;
GTimer *timer;
gint n;
gint i, j;
gint x = 0;
rand = g_rand_new(); //创建随机数对象
for(n=0; n<20; n++)
{ //产生随机数并显示出来
g_print("%d\t",g_rand_int_range(rand,1,100));
}
g_print("\n");
g_rand_free(rand); //释放随机数对象
//创建计时器
timer = g_timer_new();
g_timer_start(timer);//开始计时
for(i=0; i<10000; i++)
for(j=0; j<3000; j++)
x++;//累计
g_timer_stop(timer);//计时结束
//输出计时结果
g_print("%ld\tall:%.2f seconds was used!\n",x,g_timer_elapsed(timer,NULL));
}
编译
dp@dp:~/gliblearn % gcc `pkg-config --cflags --libs glib-2.0 gthread-2.0` a.c -o mytest
最后执行:
dp@dp:~/gliblearn % ./mytest
96 24 52 87 52 16 62 17 78 62 76 6 33 53 87 3 40 69 20 33
30000000 all:0.08 seconds was used!
dp@dp:~/gliblearn %