Fedora 7 安装xine前一段时间一直在用mplayer,最近想用amarok来听广播,但是amarok用的是xine-engine,所以播放不了各种音乐,于是准备再装一个xine。首先到xine的主页 http://xinehq.de/下 载xine-lib和xine-ui,xine-lib是xine的主程序现在的版本是1.1.7,而且只是是个后台程序,所以还需要下载一个xine的 图形界面。xine有很多个图形前端,比如gxine,kxine,oxine,等等,我用了xine-ui。直接下载就行了。对于解码器,可以使用 mplayer的win32codecs,也可以直接去 http://www.mplayerhq.hu 下载解码程序,all-20061022.tar.bz2或者essential-20061022.tar.bz2。 然后就可以开始安装了,第一步可以先安装解码器,直接将解码程序解压缩到/usr/local/lib/codecs/ 中,安装过mplayer 的win32codecs包的话可以通过 rpm -ql win32codecs 查看,一般会在/usr/lib/codecs 和/usr/lib/win32 文件夹中。 第二步安装xine-lib, #tar -jxvf xine-lib-1.1.7.tar.bz2 -C /usr/local/src #cd /usr/local/src/xine-lib-1.1.7 #./configure #make && make install 一般都会正常安装。 第三步比较关键,由于是非标准安装,需要让系统知道各so 文件的位置,通过检查文件ld.so.conf来实现 #vi /etc/ld.so.conf 查看文件中是否有/usr/local/lib这一行,如果没有就在最后加上这一行(你的xine安装位置)。 然后记得运行 #ldconfig 另外还需要让其他软件如后面安装的xine-ui 知道xine-lib已经安装,可以修改环境变量PKG_CONFIG_PATH来实现,具体方法如下面的注释3。 [注1]对于/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 [注2]对于ldconfig,它是一个位于/sbin 下的程序,它的作用就是将/etc/ld.so.conf 列出的路径下的库文件 缓存到/etc/ld.so.cache 以供使用。因此当安装完一些库文件,(例如刚安装好glib),或者修改ld.so.conf 增加新的库路径后,需要运行一下/sbin/ldconfig 来使所有的库文件都被缓存到ld.so.cache 中,如果没做,即使库文件明明就在/usr/lib 下的,也是不会被使用的,结果编译过程中报错,缺少xxx库。所以切记改动库文件后一定要运行一下ldconfig,在任何目录下运行都可以。 [注3]对于PKG_CONFIG_PATH 这个环境变量,当安装了pkgconfig-x.x.x 这个包后,就多出了pkg-config,它就是需要PKG_CONFIG_PATH 的东东。pkg-config 就是向configure 程序提供系统信息的程序,比如软件的版本、库的版本、库的路径等等。这些信息只是在编译其间使用。通过 ls /usr/lib/pkgconfig ,会看到许多的*.pc,用文本编辑器打开会发现类似下面的信息: prefix=/usr exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/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${libdir} -lglib-2.0 Cflags: -I${includedir}/glib-2.0 -I${libdir}/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 或者系统的配置文件 /etc/profile 中,修改如: PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/local/lib/pkgconfig:/usr/X11R6/lib/pkgconfig:/opt/kde3/lib/pkgconfig 并使之生效,通过 #echo $PKG_CONFIG_PATH 应该可以看到刚刚设置的: /usr/lib/pkgconfig:/usr/local/lib/pkgconfig:/usr/X11R6/lib/pkgconfig:/opt/kde3/lib/pkgconfig 从上面可以看出,安装库文件时,指定安装到/usr,是很有好处的,无论是/etc/ld.so.conf 还是PKG_CONFIG_PATH 默认都会去搜索/usr/lib 的,可以省下许多麻烦,不过从源码包管理上来说,都装在/usr 下管理是个问题,不如装在/usr/local下方便管理。其实只要设置好ld.so.conf,PKG_CONFIG_PATH路径后,就OK了。 第四步安装图形前端xine-ui: #tar -xzvf xine-ui-0.99.5.tar.gz -C /usr/local/src #cd /usr/local/src/xine-ui-0.99.5 #./configure 如果这时报错找不到xine-lib之类,多半是上一步没做好,如PKG_CONFIG_PATH 的设置是否正确并生效或者ld.so.conf 是否设置正确等问题。 #make && make install 第五步配置config文件,xine的config文件在~/.xine/ 中 #vi ~/.xine/config 找到 # path to Win32 codecs 这一段,看看该段第二行的默认path 是不是你在第一步中放codecs 的地方,如果不是就设置外部解码器路径,可以将该段第三行的注释去掉,路径改为你的codecs 文件夹的路径。然后保存退出。 最后可以直接用命令xine 来测试xine 是否正常工作。 |