织梦CMS - 轻松建站从此开始!

罗索

Glib库的安装和编译

落鹤生 发布于 2014-03-30 19:42 点击:次 
Glib是一个多种用途的工具库,它提供许多有用的数据类型,宏定义,类型变换,字符串工具,文件工具,主循环的抽象等等。它可以用于许多类-UNIX平台、Windows,OS/2和BeOS中。GLib在GNU库通用公共许可(GNU LGPL)下发布。
TAG: glib  glib编译  

Glib概述
Glib是一个多种用途的工具库,它提供许多有用的数据类型,宏定义,类型变换,字符串工具,文件工具,主循环的抽象等等。它可以用于许多类-UNIX平台、Windows,OS/2和BeOS中。GLib在GNU库通用公共许可(GNU LGPL)下发布。
GLib的主要策略是除了数据结构管理功能以外所有的功能都是线程安全的。如果你有两个线程关联系统的数据结构,他们必须使用锁来同步他们的操作。

1 编译GLib包
编译GLib包-如何编译GLib自身
1.1 UNIX下编译
在UNIX中,GLib使用标准的GNU编译系统,使用autoconf进行包的配置和解决可移植性问题,automake用于编译符合GUNU编码标准的makefile文件,libtool用于多个平台上编译共享库。编译和安装GLib库的正常次序如下:
# ./configure
# make
# make all
由GNU autoconf提供的标准选项可以被传递给configure脚本。请查看autoconf文档,或者运行./configure --help获得关于标准选项的信息。
GTK+文档包括关于编译过程和方法的更详细信息。
1.2 依赖关系
在你编译GLib库之前,你需要把一些其它的工具和库安装到系统中。在编译过程中需要两个工具是pkg-config和GNU make。
* pkg-config是用于跟踪GLib库中使用的各种库需要的编译标志的工具;
Glib依赖的许多其它库,包括:
* libiconv库:字符集转换库
* libintl库:处理消息转换数据库
* pthread库:线程实现库
* PCRE库:正则表达式库
* libselinux库:Linux安全库
1.3 其它的配置选项
GLib库支持的configure脚本选项有:
configure [[--enable-debug=[no|minimum|yes]]] [[--disable-gc-friendly] | [--enable-gc-friendly]] [[--disable-mem-pools] | [--enable-mem-pools]] [[--disable-threads] | [--enable-threads]] [[--with-threads=[none|posix|dce|win32]]] [[--disable-regex] | [--enable-regex]] [[--with-pcre=[internal|system]]] [[--disable-included-printf] | [--enable-included-printf]] [[--disable-Bsymbolic] | [--enable-Bsymbolic]] [[--disable-gtk-doc] | [--enable-gtk-doc]] [[--disable-man] | [--enable-man]] [[--disable-xattr] | [--enable-xattr]] [[--disable-selinux] | [--enable-selinux]] [[--disable-dtrace] | [--enable-dtrace]] [[--disable-systemtap] | [--enable-systemtap]] [[--enable-gcov] | [--disable-gcov]] [[--with-runtime-libdir=RELPATH]]

2 编译GLib应用程序
2.1 UNIX下编译Glib应用程序
为了编译GLib应用程序,你需要告诉编译器那里找到GLib的头文件和动态库,这里使用pkg-config工具来完成。
下面交互式shell会话显示pkg-config如何使用:
# pkg-config --cflags glib-2.0
-I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
# pkg-config --libs glib-2.0
-L/usr/lib -lm -lglib-2.0
如果你的应用使用线程或者GObject特征,它必须下面pkg-config返回头文件和库来编译和连接。
# pkg-config --cflags --libs gthread-2.0
# pkg-config --cflags --libs gobject-2.0
如果你的应用程序使用模块,使用下面pkg-config获得的头文件和库文件
# pkg-config --cflags --libs gmodule-export-2.0
# pkg-config --cflags --libs gmodule-2.0
最简单的编译程序的方法是使用shell的“backticks”功能。如果你把命令放置在backtick之间,那么它的输出将替代执行前的命令行,因此编译GLib helloworld的命令如下:
# cc `pkg-config --cflags --libs glib-2.0` hello.c -o hello
如果你希望确保你的程序没有使用任何deprecated功能,你可以使用命令行选项-DG_DISABLE_DEPRECATED=1定义预编译符号G_DISABLE_DEPRECATED。
使用Glib被推荐的方式是只包括三个顶级头文件glib.h,glib-object.h,gio.h。仍然,这里有一些例外,下面这些头文件必须分别 包括:gmodule.h,glib/gi18n-lib.h或glib/gi18n.h,glib/gprintf.h和glib/gstdio.h。
从2.17版本开始,当单独的头文件直接被包含时,Glib强制产生错误。为了帮助过度,缺省的情况下不打开强制。如果要打开强制功能,通过使用命令行选 项-DG_DISABLE_SIGNLE_INCLUDES来定义预编译符号G_DISABLE_SIGNLE_INCLUDES.

(fan_hai_ping)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201403/16939.html]
本文出处:CSDN博客 作者:fan_hai_ping 原文
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容