在Fedora 10上编译vlc1.0.2全程笔记

在linux上编译vlc,花了很久才搞定 ,因此特地的记录下整个编译过程。
本来先是想在windows上用cygwin,或者msys+mingw来进行编译,后来老大来了句真的linux都编译不过,假的linux更会遇到问题了,想想也是,自己的目的不在于做一个windows上面的vlc版本,而是想调试vlc,看一下它的执行过程,于是还是回到linux进行编译,在真实的linux物理机器上编译速度很快。


linux的版本是Fedora10, vlc的版本是最新的vlc1.0.2。


Vlc linux  上的编译过程 :  
1.首先从vlc的官网上下载最新的vlc代码,首先解压缩,然后进入解压后的目录。
因为vlc大量使用了第三方的库, 比如libdvbpsi(TS),libmpeg2,ffmpeg等等,所以我们需要首先下载我们需要的第三方库进行编译。VLC给出了一个自动化的解决方案,关注一下主目录\extras\contrib,里边有一些工具来帮助你自动下载、patch和编译所有可能用到的第三方库。先运行一下那个目录下的bootstrap,如果缺少***.mak的话可以到VLC的代码库中找一下,是一个系统相关的文件,然后简单的一句make就可以了。如果你对这些库比较熟悉的话最好先手动筛选一下,有一些可能不是你所需要的,而下载他们可能需要很长的时间。


after you executed bootstrap, there is  a file called "distro.mk", you can modify it to decide which libs you will compile?


这一步会花很长的时间,中途也会碰到很多问题:
1)
比如在编译ffmpeg的时候需要用到libgsm,当然你如果让ffmpeg不支持libgsm也行,libgsm在给出的链接地址已经找不到了,所以需要你自己从网上下载下来放到extras/contrib/src目录下,然后就可以编译通过了,在编译extras库的过程中,可能有不少链接地址已经失效,这时候就需要自己去下载这些库,然后编译;
2)
编译过程中最郁闷的是libtool的问题,最新给出的libtool有bug存在,所以可以使用系统自带的libtool,在/usr/bin中,你可以把它们拷贝过来,当然你也可以修改configure文件,把里面的libtool换成/usr/bin/libtool也一样。
3)
在编译x264的时候,提示说ffmpeg中libavswscale有错误,编译总是通不过,后来发现是pixdesc.h/.c放在libavcodec中了,而以前是放在libavutil中的,所以得把这个文件放回去,然后修改Makefile文件,这样就可以编译过去了。


2.第一步搞定以后,就可以进入vlc目录下编译vlc的源代码了,这时候才想明白第一步中不是所有的库都需要,其实只需要编译自己需要的库就可以了,比如你只是想让vlc播放带mpeg2的TS流,那么你只需要编译libmpeg2, liba52, libdvbpsi就可以了。 
在这里最重要的就是配置configure的参数了,因为它决定了你需要在vlc中添加哪些插件,决定编译后的vlc到底有多大,下面是我的配置文件:


./configure \
--enable-x11 \
--enable-xvideo \
--enable-sdl \
--enable-avcodec \
--enable-avformat \
--enable-swscale \
--enable-mad \
--enable-dvbpsi \
--enable-a52 \
--enable-libmpeg2 \
--enable-dvdnav \
--enable-faad \
--enable-vorbis \
--enable-ogg \
--enable-theora \
--enable-mkv \
--enable-freety --disable-fribidi \
--enable-speex \
--enable-flac \
--disable-live555 \
--enable-caca \
--disable-skins2 \
--enable-alsa \
--disable-qt4 \
--enable-ncurses \
--enable-release \
--with-dvbpsi=/usr/local \
--enable-run-as-root \
--with-libmpeg2-tree=/home/lf/linfeng/vlc/vlc-1.0.4/extras/contrib/src/libmpeg2


在这里可以执行./configure -h在获得有哪些参数可以配置,看多了就明白是怎么回事了。

接着执行make && make install, 注意make install需要超级用户权限.


3. 在第二步中,make的时候同样会遇到很多问题:
1) libtool:
./libtool: line 814: X--tag=CC: command not found
google得出结论是libtool的版本问题,最新的好像有bug,但是找个老版本来安装太麻烦,无意间看到一个方法:修改libtool文件,将ECHO="echo"替换为echo="echo",错误消失...


4. 经过make install后,vlc就以及编译并安装好了,这时候就可以执行vlc命令了。
用vlc播放*.m2v, *.ts的文件,vlc界面上就会出现如下错误:


main decoder error: no suitable decoder module for fourcc `mpgv'.
同时,console中还会出现如下警告:
重定位后无法恢复段 prot: 权限不够


一度以为是自己没有将libmpeg2给安装上, 后来弄了半天才发现是selinux把插件给禁止了, 所以vlc没有把这些插件给加载进去,当然就找不到mpgv的解码器libmpeg2, 执行setenforce 0把selinux关闭。


5. 这样,我们就可以运行我们的vlc播放器了,如果要调试vlc的代码,就可以修改源码,然后进行调试:)


最后总结下,如果要编译vlc这种比较大的开源库,就要做好花时间的准备,这个不可能一下子就弄完,中间你会遇到很多问题,当然在借助google的同时,还需要自己认真去分析是哪里出问题了,因为linux下很多开源软件在不断的升级中,其中肯定会有很多的bug还没有解决可能就提交源代码了,所以有时候需要自己所学的只是去解决这些问题,在解决问题的过程中,你就成长了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值