当前位置: 首页 > 工具软件 > xine > 使用案例 >

Fedora Core 安装 xine

佴淮晨
2023-12-01
http://hi.baidu.com/mqfcuv/blog/item/e6536e81fc5f14dbbd3e1e20.html

<script language="JavaScript" type="text/javascript"> </script>
<script type="text/javascript"> var myref = encodeURI("http://hi.baidu.com/mqfcuv/blog/item/e6536e81fc5f14dbbd3e1e20%2Ehtml");</script>   百度空间 <script language="JavaScript" type="text/javascript"> document.write(" | 登录"); </script> | 登录

linux Fedora 7 安装xine
2007-09-09 18:37

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 是否正常工作。
<script language="javascript" type="text/javascript">!-- var hstr="/mqfcuv/brwstat?key1=1"; document.write("
 类似资料: