glib源码安装使用方法

glib库是GTK+和GNOME工程的基础底层核心程序库,是一个综合用途的实用的轻量级的C程序库,它提供C语言的常用的数据结构的定义、相关的处理函数,有趣而实用的宏,可移植的封装和一些运行时机能,如事件循环、线程、动态调用、对象系统等的API。它能够在类UNIX的操作系统平台(如LINUX、HP-UNIX等)、WINDOWS、OS2和BeOS等操作系统台上运行。

本文将介绍在linux下源码安装glib库的过程,这过程很麻烦,一点都不轻松,故记录下。

------

1、安装glib

http://ftp.acc.umu.se/pub/GNOME/sources/glib/

我下载了个glib-2.48.1.tar.xz,如果是.tar.xz格式用tar -xvf解压,如果是.tar.gz格式用tar -zxvf解压

解压后进入目录后,三部曲:

./configure
make
make install

看起来是简单,但第一步./configure问题多多,诸多问题请看下面各种解决法子。

2、zlib问题

报错如下:

configure: error: *** Working zlib library and headers not found ***

自glib-2.23开始就需要zlib,zlib是提供数据压缩用的函式库。

http://www.zlib.net/ (下载地址在网页的中间部分)

我下载了个zlib-1.2.8.tar.gz,解压、进目录,三部曲:

./configure
make
make install

3、libffi问题

报错如下:

No package ‘libffi‘ found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables LIBFFI_CFLAGS
and LIBFFI_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

"FFI" 的全名是Foreign Function Interface,通常指的是允许以一种语言编写的代码调用另一种语言的代码。而libffi库只提供了最底层的、与架构相关的、完整的"FFI",在它之上必须有一层来负责管理两种语言之间参数的格式转换。

http://sourceware.org/libffi/

我下载了libffi-3.2.1.tar.gz,解压、进目录,三部曲:

./configure
make
make install

4、pkg-config问题

报错如下:

configure: error: The pkg-config script could not be found or is too old.  Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config.

pkg-config能根据软件安装时软件的.pc配置文件路径找到相应的头文件路径和库文件路径。

https://www.freedesktop.org/wiki/Software/pkg-config/

我下载了pkg-config-0.29.1.tar.gz,解压、进目录,三部曲:

./configure
make
make install

如果第一步遇到如下错误:

configure: error: Either a previously installed pkg-config or "glib-2.0 >= 2.16" could not be found. Please set GLIB_CFLAGS and GLIB_LIBS to the correct values or pass --with-internal-glib to configure to use the bundled copy.

只需要:

./configure --with-internal-glib

5、pcre问题

报错如下:

configure: error: Package requirements (libpcre >= 8.13) were not met:

No package ‘libpcre‘ found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables PCRE_CFLAGS
and PCRE_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括perl兼容的正则表达式库。这些在执行正规表达式模式匹配时用与Perl 5同样的语法和语义是很有用的,也可以来解决C语言中使用正则表达式的问题。

https://sourceforge.net/projects/pcre/files/pcre/

我下载了pcre-8.38.tar.gz,解压、进目录,改动的三部曲:

./configure --enable-utf8 --enable-unicode-properties
make
make install

如果第一步只是./configure,到时候安装glib会继续报错:

checking for Unicode support in PCRE... no
configure: error: *** The system-supplied PCRE does not support Unicode properties or UTF-8.

所以第一步是为了解决Unicode、UTF-8的支持,仅限于pcre7.9以上版本

*安装pcre如果报错如下:

configure: error: You need a C++ compiler for C++ support

那是你所用的linux没支持c++编译,只需要:

apt-get install build-essential

**当安装好pcre后,输入pcretest -C来打印pcre的安装情况,一般输出如下:

PCRE version 8.38 2015-11-23
Compiled with
  8-bit support
  UTF-8 support
  Unicode properties support
  No just-in-time compiler support
  Newline sequence is LF
  \R matches all Unicode newlines
  Internal link size = 2
  POSIX malloc threshold = 10
  Parentheses nest limit = 250
  Default match limit = 10000000
  Default recursion depth limit = 10000000
  Match recursion uses stack

而如果报错为:

pcretest: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory

pcretest: error while loading shared libraries: libpcreposix.so.0: cannot open shared object file: No such file or directory

这种情况好像大多数linux都会发生,只需要自己建立一个软链接即可:

ln -s /usr/local/lib/libpcre.so.1 /lib

ln -s /usr/local/lib/libpcreposix.so.0 /lib

(如果之后还没用,可以考虑把/lib换/lib64)

6、glib使用方法

*如果都按照上面所列举的种种问题仔细折腾了后还有问题的话,请留言给我。(本人在Kali2、Kali Rolling、Ubuntu等都测试过了)

现在写一个简单的c语言代码,命名为hello.c

#include <glib.h>
int main(int argc, char** argv){
    GList* list=NULL;
    list=g_list_append(list,"Hello world!");
    list=g_list_append(list,"made by pcat");
    list=g_list_append(list,"http://pcat.cnblogs.com");
    printf("The first item is %s\n",g_list_first(list)->data);
    return 0;
}

编译如下:

gcc $(pkg-config --cflags --libs glib-2.0) hello.c -o hello

./hello

如果在一些linux上报错:

undefined reference to `g_list_append‘
undefined reference to `g_list_first‘

那是因为有些gcc存在编译参数的顺序问题,$(pkg-config --cflags --libs glib-2.0)放在源文件的前面,而当编译器在源文件中遇到不能解析的函数时,在源文件之后的选项中寻找相关的信息,那么就出现了编译错误,也就是无法找到相关的函数定义。

所以只需要:

gcc hello.c -o hello $(pkg-config --cflags --libs glib-2.0)
时间: 2024-10-11 20:55:55

glib源码安装使用方法的相关文章

linux下使用qq————pidgin-lwqq 源码安装详细教程

今天费了不少功夫终于安装了pidgin——lwqq,可以在linux上使用qq了lwqq是在linux下通讯工具pidgin上使之支持webqq协议的组件下面来详细介绍一下安装方法,共介绍两种,通过apt-get工具和通过源码安装(针对ubuntu和debian用户) 要安装pidgin-lwqq首先要安装lwqq,这两个组件已经被分开 首先我们来安装lwqq 先是lwqq依赖的库的安装使用apt-get命令可以 $ sudo apt-get install build-essential cm

zabbix源码安装流程及报错解决方法

zabbix源码安装流程及报错解决方法 一. zabbix的介绍 1) zabbix是什么 zabbix是一款基于web页面的.开源的.企业级的,支持分布式部署的监控软件. 2)2.zabbix的作用 监控windows和Linux主机上的软硬件状态. 监控各网络设备,如路由器.交换机.防火墙.f5.打印机等. 支持邮件短信微信等平台发送告警通知. 通过web页面及图形展示监控数据. 3)zabbix的特性 由zabbix server和agent程序协同工作,还支持分布式监控,这时需要安装za

安装软件包的三种方法yum、rpm、源码安装

一.软件安装方法1.rpm安装rpm安装软件时不会自动安装依赖2.yum安装yum安装软件时会自动安装软件所需的依赖3.源码安装最难,需要编译二.rpm介绍首先将之前的系统光驱挂载,mount /dev/cdrom /mnt/执行上面命令将iso挂载到/mnt/下ls /mnt/ cd /mnt/Packages 可以看到里面很多rpm安装包例如:zenity-3.22.0-1.el7.x86_64.rpmrpm包格式,包名.版本号.发布版本号.平台rpm -ivh rpm包文件 //安装rpm

linux源码安装iostat,dstat,systat的方法

源码安装systat: # wget http://perso.orange.fr/sebastien.godard/sysstat-8.0.4.1.tar.gz# tar zxvf sysstat-8.0.4.1.tar.gz# cd sysstat-8.0.4.1# ./configure# make# make install 使用iostat分析压力过大的服务器: $iostat -x 1 Linux 2.6.33-fukai (fukai-laptop)          _i686_

在 Linux 系统上源码安装 GTK+ 2.0

在 Linux 系统上源码安装 GTK+ 2.0==================================================Keywords: GTK+, Install, Linux, SourceAuthor:       whyglinux (whyglinux AT hotmail DOT com)Date:          2007-01-07==================================================目录0. 前言1.

apache源码安装必须依赖的库apr----/etc/ld.so.conf 文件介绍

Apache所依赖的库,封装了各个系统相关的API等.虽然都是Apache开发的,但是现在最新版本的Apache和APR源码是分开的.要编Apache就必须使用APR. /etc/ld.so.conf 此文件记录了编译时使用的动态库的路径,也就是加载so库的路径. 默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件,而通常通过源码包进行安装时,如果不指定--prefix会将库安装在 /usr/local目录下,而又没有在文件/etc/ld.so.conf中添加/usr/lo

MySQL代理Atlas在CentOS7.0中的源码安装实践(设置开机自启)

提示:如要去掉SQL过滤(无WHERE子句的UPDATE和DELETE)功能,可以先修改源码: 修改文件 Atlas-2.2.1\plugins\proxy\proxy-plugin.c 修改方法 is_in_blacklist,直接返回FALSE 依赖包: glib-2.32.4.tar.xz glibc-devel  libevent-devel  lua-devel  openssl-devel  flex  mysql-devel xz  gettext-devel 分步命令: # 安装

ubuntu php5.6源码安装

今天又花了一天时间装了php,感觉php的源码安装也挺麻烦的,整个过程各种报错. 下篇文章准备整合所有查找到的报错和解决方法. php和nginx一样,在安装前需要装一堆的依赖.有libmcrypt.mcrypt.mhash.其实远不止这三个包,在后面的configure和make中还会陆陆续续安装一些依赖. 1.安装libmcrypt.mcrypt.mhash(整个过程都在/usr/local/src/php目录下) #创建/usr/local/src/php目录并进入mkdir /usr/l

php源码安装

我是将下载好的软件包放到虚拟机 /home目录下,虚拟机是centos6.4 如果想了解nginx源码安装http://blog.csdn.net/zkg510168343/article/details/43703635 mysql源码安装 http://blog.csdn.net/zkg510168343/article/details/43284071 PHP安装前准备,软件包下载地址 libmcrypt包 http://sourceforge.net/projects/mcrypt/fi