PKG_CONFIG_PATH

从源码编译安装东东,不是很容易,想想在使用lfs之前,源码编译安装软件从来没
成功过,甚至出现错误都无从下手,只能放弃
经过lfs的洗礼,总算对源码编译安装有了一点认识,可惜当初没有把这些经验写下来
但是现在开始写也不迟 将编译中碰到的问题及解决的方法记下来,积累经验,
也能够让来往的newbie对源码安装软件了解一些,多一些成功机率,毕竟从源码包编译
东东还是有一定好处的 ^_^
先说一下源码编译的基本方法及源码编译过程中几个重要的文档,连同重要变量
PKG_CONFIG_PATH 的设定,经常在论坛看到有人源码编译失败,都是这个东东搞的鬼 ^_^

ChangeLog :
05/02/06 :编译dosbox make时出现很难找到头文档错误,类似的错误曾碰到过.记录。
LD_LIBRARY_PATH的作用。

从源码编译安装东东,不是很容易,想想在使用lfs之前,源码编译安装软件从来没
成功过,甚至出现错误都无从下手,只能放弃
经过lfs的洗礼,总算对源码编译安装有了一点认识,可惜当初没有把这些经验写下来
但是现在开始写也不迟 将编译中碰到的问题及解决的方法记下来,积累经验,
也能够让来往的newbie对源码安装软件了解一些,多一些成功机率,毕竟从源码包编译
东东还是有一定好处的 ^_^
先说一下源码编译的基本方法及源码编译过程中几个重要的文档,连同重要变量
PKG_CONFIG_PATH 的设定,经常在论坛看到有人源码编译失败,都是这个东东搞的鬼 ^_^

如何从源码包安装软件?

从源码包安装软件最重要的就是仔细阅读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这个变量吧:

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!