glib安装

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

转载:http://blog.csdn.net/cswodi/article/details/7282122


一、glib介绍


libc指C函数库,这是一个通称,而glibc是GNU实现的libc,至于glib是一组较高层的函数库,比如链表、Hash等,在linux中glib是建立在glibc之上的,qt的库就叫做qt,也是建立在glibc和其他一些基本库之上。


GLib是Gtk +库和Gnome的基础。GLib可以在多个平台下使用,比如Linux、Unix、Windows等。GLib为许多标准的、常用的C语言结构提供了相应的替代物。
GLib中定义了好多有用的数据结构,如单(双)向连表,可变长的数组等,线程池等有用的东西。使用GLib库的程序都应该包含GLib的头文件glib.h。

Glibc 是提供系统调用和基本函数的 C 库,比如open, malloc, printf等等。所有动态连接的程序都要用到它。是GNU开发的C库。


相同点:
    两者都是供调用的类库。
不同点:
    glib是GTK+调用的类库。glibc中定义了好多有用的数据结构,如单(双)向连表,可变长的数组等。
    glibc是GNU开发的C库。两者基本上没有太大的联系。

GLibis a general-purpose utility library, which provides many useful data types, macros, type conversions, string utilities, file utilities, a main loop abstraction, and so on. It works on many UNIX-like platforms, Windows, OS/2 and BeOS. GLib is released under the GNU Library General Public License (GNU LGPL).

The general policy of GLib is that all functions are invisibly threadsafe with the exception of data structure manipulation functions, where, if you have two threads manipulating thesame data structure, they must use a lock to synchronize their operation.

GLIBC

The GNU C library is primarily designed to be a portable and high performance C library.

It follows all relevant standards (ISO C 99, POSIX.1c, POSIX.1j, POSIX.1d, Unix98, Single Unix Specification). It is also internationalized and has one of the most complete internationalization interfaces known.




二、glib下载

下载地址:

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




三、安装

执行:

./configure

make

make install


在执行./configure的时候报错:

configure: error: Package requirements (libffi >= 3.0.0) were not met:

No package 'libffi' found

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


这里需要安装libffi 3.0.0以上版本

在ChinaUnix下载地址:

http://download.chinaunix.net/download/0006000/5819.shtml

或:http://sourceware.org/libffi/

依然是./configure     make      make install的安装方式,顺利通过。









下面是关于安装过程可能出现的问题的解决办法:

http://blog.163.com/huangbao_007/blog/static/356365352008102074129933/


如何从源码包安装软件?

从源码包安装软件最重要的就是仔细阅读README INSTALL等说明文件

它会告诉你怎样才能成功安装 :)
通常从源码包安装软件的步骤是:
tar jxvf gtk+-2.4.13.tar.bz2 解开源码包
cd gtk+-2.4.13/ 进入源码目录
./configure 似乎在某些环境下./configure会造成终端退出
而使用. configure则会正常运行,如果有这个现象,就试试 . configure

通过configure程序猜测主机信息,最终建立Makefile,以完成make,所以如果./configure不成功
而去make的话,就会出现"make: *** No targets specified and no makefile found. Stop."
make 当./configure成功结束后,就开始正式编译程序了.
make install 编译成功后使用make install安装
make uninstall 某些软件支持卸载,可能使用该方法卸载,如果支持的话,通常会在README中写到(似乎比较少)

configure程序带有很多参数,可以通过 ./configure --help 查看详细内容,通常位于前面的是常规configure的
参数说明,末尾是该程序的可用参数说明。
./configure --prefix=/usr 指定安装目录,通常从源码包编译安装的软件默认会放在/usr/local下
因为这是FHS(Filesystem Hierarchy Standard)的规定,不知道什么是FHS?看看这篇文章吧:
http://www.pathname.com/fhs/pub/fhs-2.3.html 相信它会让你对linux系统结构有更好的理解,很值得读读。

再说一下几个关系到能否成功编译的东东:/etc/ld.so.conf ldconfig PKG_CONFIG_PATH

首先说下/etc/ld.so.conf:

这个文件记录了编译时使用的动态链接库的路径。
默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件
如果你安装了某些库,比如在安装gtk+-2.4.13时它会需要glib-2.0 >= 2.4.0,辛苦的安装好glib后
没有指定 --prefix=/usr 这样glib库就装到了/usr/local下,而又没有在/etc/ld.so.conf中添加/usr/local/lib
这个搜索路径,所以编译gtk+-2.4.13就会出错了 :(
对于这种情况有两种方法解决:
一:在编译glib-2.4.x时,指定安装到/usr下,这样库文件就会放在/usr/lib中,gtk就不会找不到需要的库文件了 :)
对于安装库文件来说,这是个好办法,这样也不用设置PKG_CONFIG_PATH了 (稍后说明)

二:将/usr/local/lib加入到/etc/ld.so.conf中,这样安装gtk时就会去搜索/usr/local/lib,同样可以找到需要的库 :)
将/usr/local/lib加入到/etc/ld.so.conf也是必须的,这样以后安装东东到local下,就不会出现这样的问题了。
将自己可能存放库文件的路径都加入到/etc/ld.so.conf中是明智的选择 ^_^
添加方法也极其简单,将库文件的绝对路径直接写进去就OK了,一行一个。例如:
/usr/X11R6/lib
/usr/local/lib
/opt/lib

再来看看ldconfig是个什么东东吧 :

它是一个程序,通常它位于/sbin下,是root用户使用的东东。具体作用及用法可以man ldconfig查到
简单的说,它的作用就是将/etc/ld.so.conf列出的路径下的库文件 缓存到/etc/ld.so.cache 以供使用
因此当安装完一些库文件,(例如刚安装好glib),或者修改ld.so.conf增加新的库路径后,需要运行一下/sbin/ldconfig
使所有的库文件都被缓存到ld.so.cache中,如果没做,即使库文件明明就在/usr/lib下的,也是不会被使用的,结果
编译过程中抱错,缺少xxx库,去查看发现明明就在那放着,搞的想大骂computer蠢猪一个。 ^_^
我曾经编译KDE时就犯过这个错误,(它需要每编译好一个东东,都要运行一遍),所以

切记改动库文件后一定要运行一下ldconfig,在任何目录下运行都可以。


再来说说 PKG_CONFIG_PATH这个变量吧:

经常在论坛上看到有人问"为什么我已经安装了glib-2.4.x,但是编译gtk+-2.4.x 还是提示glib版本太低阿?
为什么我安装了glib-2.4.x,还是提示找不到阿?。。。。。。"都是这个变量搞的鬼。
先来看一个编译过程中出现的错误 (编译gtk+-2.4.13):

checking for pkg-config... /usr/bin/pkg-config
checking for glib-2.0 >= 2.4.0 atk >= 1.0.1 pango >= 1.4.0... Package glib-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `glib-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'glib-2.0' found

configure: error: Library requirements (glib-2.0 >= 2.4.0 atk >= 1.0.1 pango >= 1.4.0) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.
[root@NEWLFS gtk+-2.4.13]#
很明显,上面这段说明,没有找到glib-2.4.x,并且提示应该将glib-2.0.pc加入到PKG_CONFIG_PATH下。
究竟这个pkg-config PKG_CONFIG_PATH glib-2.0.pc 是做什么的呢? let me tell you ^_^
先说说它是哪冒出来的,当安装了pkgconfig-x.x.x这个包后,就多出了pkg-config,它就是需要PKG_CONFIG_PATH的东东
pkgconfig-x.x.x又是做什么的? 来看一段说明:

The pkgconfig package contains tools for passing the include path and/or library paths to build tools during the make file execution.

pkg-config is a function that returns meta information for the specified library.

The default setting for PKG_CONFIG_PATH is /usr/lib/pkgconfig because of the prefix we use to install pkgconfig. You may add to PKG_CONFIG_PATH by exporting additional paths on your system where pkgconfig files are installed. Note that PKG_CONFIG_PATH is only needed when compiling packages, not during run-time.

我想看过这段说明后,你已经大概了解了它是做什么的吧。
其实pkg-config就是向configure程序提供系统信息的程序,比如软件的版本啦,库的版本啦,库的路径啦,等等
这些信息只是在编译其间使用。你可以 ls /usr/lib/pkgconfig 下,会看到许多的*.pc,用文本编辑器打开
会发现类似下面的信息:

prefix=/usr
exec_prefix=$
libdir=$/lib
includedir=$/include

glib_genmarshal=glib-genmarshal
gobject_query=gobject-query
glib_mkenums=glib-mkenums

Name: GLib
Description: C Utility Library
Version: 2.4.7
Libs: -L$ -lglib-2.0
Cflags: -I$/glib-2.0 -I$/glib-2.0/include

明白了吧,configure就是靠这些信息判断你的软件版本是否符合要求。并且得到这些东东所在的位置,要不去哪里找呀。
不用我说你也知道为什么会出现上面那些问题了吧。

解决的办法很简单,设定正确的PKG_CONFIG_PATH,假如将glib-2.x.x装到了/usr/local/下,那么glib-2.0.pc就会在
/usr/local/lib/pkgconfig下,将这个路径添加到PKG_CONFIG_PATH下就可以啦。并且确保configure找到的是正确的
glib-2.0.pc,就是将其他的lib/pkgconfig目录glib-2.0.pc干掉就是啦。(如果有的话 ^-^)
设定好后可以加入到~/.bashrc中,例如:
PKG_CONFIG_PATH=/opt/kde-3.3.0/lib/pkgconfig:/usr/lib/pkgconfig:/usr/local/pkgconfig:
/usr/X11R6/lib/pkgconfig
[root@NEWLFS ~]#echo $PKG_CONFIG_PATH
/opt/kde-3.3.0/lib/pkgconfig:/usr/lib/pkgconfig:/usr/local/pkgconfig:/usr/X11R6/lib/pkgconfig

从上面可以看出,安装库文件时,指定安装到/usr,是很有好处的,无论是/etc/ld.so.conf还是PKG_CONFIG_PATH
默认都会去搜索/usr/lib的,可以省下许多麻烦,不过从源码包管理上来说,都装在/usr下
管理是个问题,不如装在/usr/local下方便管理
其实只要设置好ld.so.conf,PKG_CONFIG_PATH路径后,就OK啦 ^_^

另外某些软件因为版本原因(比如emacs-21.3),在gcc-3.4.x下编译无法成功,(make 出错)
使用低版本的gcc就可能编译通过。
可能是因为gcc-3.3.x和gcc-3.4.x变化很大的缘故吧。

暂时想到了这么多,先记下这些吧,如果你对源码包编译有了一点的了解,就不枉我打了这么半天字啦。 ^_^

另外./configure 通过,make 出错,遇到这样的问题比较难办,只能凭经验查找原因,比如某个头文件没有找到,
这时候要顺着出错的位置一行的一行往上找错,比如显示xxxx.h no such file or directory 说明缺少头文件
然后去google搜。
或者找到感觉有价值的错误信息,拿到google去搜,往往会找到解决的办法。还是开始的那句话,要仔细看README,INSTALL
程序如何安装,需要什么依赖文件,等等。

另外对于newbie来说,编译时,往往不知道是否成功编译通过,而编译没有通过就去make install
必然会出错,增加了解决问题的复杂性,可以通过下面方法检查是否编译成功:

一:编译完成后,输入echo $? 如果返回结果为0,则表示正常结束,否则就出错了 :(
echo $? 表示 检查上一条命令的退出状态,程序正常退出 返回0,错误退出返回非0。
二:编译时,可以用&&连接命令, && 表示"当前一条命令正常结束,后面的命令才会执行",就是"与"啦。
这个办法很好,即节省时间,又可防止出错。例:
./configure --prefix=/usr && make && make install



           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
理解 Linux 下 PKG_CONFIG_LIBDIR 和 PKG_CONFIG_PATH 的作用 pkg-config是一个用于查询已安装软件包的信息的工具,它主要用于检查和获取软件包的编译和链接标志。在交叉编译环境中,这个工具尤为重要,因为它帮助确保正确地定位和使用交叉编译的库和头文件。设置和是在交叉编译环境中确保正确库和头文件定位的关键步骤。这两个环境变量告诉 pkg-config 在哪里寻找.pc文件,以提供正确的库信息。在处理交叉编译环境时,正确配置这些变量是确保项目成功构建的不可或缺的一部分。 阅读详情

相关推荐

Ubuntu下安装glib-2.28.8

背景介绍:          我的项目需要用到glib的知识,我将最新的学习心得,做一个记录分享,以便以后需要使用时可以做参考。 基本概念: GLib是一个跨平台的、用C语言编写的库,起初是GTK+的一部分,但到了GTK+第二版,开发者决定把跟图形界面无关的代码分开,这些代码于是就组装成了GLib。因为GLib具有跨平台特性,所以用它编写的程序可以无需进行大幅度修改就可以在其他程序上编译和运

ardentoto的专栏 1万+

Glib参考手册

跨平台开发时基本都会用到Glib。文档是Glib的参考手册。英文,pdf

GLib 中文参考手册

GLib中文参考手册,学习GLib库的好帮手,提高自己的C语言开发水平。

【Linux】PKG_CONFIG_PATH

目录 [ERROR]为了解决以下部署问题 一、什么是configure 二、什么是pkg-config 1、pkg-config介绍 2、pkg-config功能 3、glib-2.0的.pc文件内容举例 4、 环境变量PKG_CONFIG_PATH 三、运行时库的连接 [ERROR]为了解决以下部署问题 Package sentencepiece was not found in the pkg-config search path. Perhaps you shou

qq_36182852的博客 1万+

如何从源码包安装软件?

如何从源码包安装软件?从源码包安装软件最重要的就是仔细阅读README INSTALL等说明文件它会告诉你怎样才能成功安装 通常从源码包安装软件的步骤是:tar jxvf gtk+-2.4.13.tar.bz2 解开源码包cd gtk+-2.4.13/ 进入源码目录./configure 似乎在某些环境下./configure会造成终端退出而使用. configure则会正常运行,如果有这

OldJavaMan的专栏 2601

glib安装详细教程

一、安装glib wget http://ftp.acc.umu.se/pub/GNOME/sources/glib/2.45/glib-2.45.2.tar.xz tar-xfglib-2.45.2.tar.xz 1、进入目录文件中 ./configure make make install 如果没什么问题就直接看第四部分。若有问题看参考下面 二、 ./configure时的问题 1、zlib库的问题 如果发现报错,没有zli...

Answer的博客 1万+

linux安装glib,glib源码安装使用方法

glib源码下载地址问题描述:centos 6.5 源码编译qemu ./configure时出现错误 ERROR: glib-2.22 gthread-2.0 is required to compile QEMU解决方法:yum install gtk2-devel 安装后编译通过yum install -y glib*installlibglib2.0-devglib库是GTK+和GNO...

weixin_32002013的博客 4429

linux安装最新版的glib库,GLib安装与简析

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

weixin_36358109的博客 3015

Glib库的安装和编译

Glib库的安装和编译  (2012-02-23 15:21:33) 转载▼ 标签:  glib   编译   杂谈 分类: gtk Glib概述 Glib是一个多种用途的工具库,它提供许多有用的数据类型,宏定义,类型变换,字符串工具,文件工具,主循环的抽象等等。它可以用于许多类-UNIX平台、Windows

jfkidear的专栏 1993

glib 2.0 arm linux,glib源码安装使用方法

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

weixin_29791743的博客 1421

ubuntu安装glib2

ubuntu安装一些软件包时,有时会出现 “找不到GLib2.0”的错误,这是因为安装过程中找不到"glib2.0.pc"的原因。以下是解决方法:    1、运行命令 apt-cache search "glib2" .查看缺少那些包,正常情况应包含:         glib2.0    glib2.0-data glib2.0-dev 等几个包   2、如果没有以上的包,则安装之。

kaka的专栏 1万+

linux 怎么卸载glib,glib安装

对于glib的介绍应该很多了。这里就不再对glib进行简介。安装glib首先要下载glib包,可以在下载。下载之后进行解压缩。然后就使用经典的安装三部曲1、./configure 2、 make 3、make install这里configure主要是配置并生成Makefile文件,make主要是对程序进行编译,make install主要是对编译好的程序进行安装。./configure...

weixin_35935712的博客 569

glib安装 glib使用手册

一、glib介绍 libc指C函数库,这是一个通称,而glibc是GNU实现的libc,至于glib是一组较高层的函数库,比如链表、Hash等,在linux中glib是建立在glibc之上的,qt的库就叫做qt,也是建立在glibc和其他一些基本库之上。 GLib是Gtk +库和Gnome的基础。GLib可以在多个平台下使用,比如Linux、Unix、Windows等。GLib

7689

Centos 安装 glib

           下面就直接进入主题了,就不对 glib 是什么进行解释了。        安装glib                 >下载地址:http://ftp.acc.umu.se/pub/GNOME/sources/glib/                   注意:这里下载的最好不要是最新版的,本人试过下载2.54.0版的,会出现下面的这个错误             ...

Mrs_Yu的博客 7574

Ubuntu上安装Glib

原文 https://my.oschina.net/u/2306127/blog/422177 摘要: Glib被用到很多开源库中,但不知啥原因,Glib安装并没有被整合到Ubuntu的安装源,需要自己安装。这里用UbuntuKylin15.04安装成功,分享给大家。 Glib被用到很多开源库中,但不知啥原因,Glib安装并没有被整合到Ubuntu的安装源,需要自己安装。 首

jgw2008的专栏 3237

GLib安装与简析

一、GLib在CentOS上的安装 检查系统当前的版本 # rpm -qi glibc Name        : glibc                        Relocations: (not relocatable) Version     : 2.5                               Vendor: Red Hat, Inc. Release

h_x_j的博客 3938
上一篇: linux下多定时器的实现 经典
下一篇: linux图形界面基本知识 X X11 Xfree86 Xorg GNOME KDE之间的关系
gftygff
博客等级 码龄8年 25粉丝 171原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值