zoukankan      html  css  js  c++  java
  • Fedora 17下交叉编译vlc-2.0.6-win32小记

    关于编译windows下的vlc网上的教程除了翻译N年前wiki官网的那些蚂蚁文之外,可以说基本没啥参考意义和价值。因为那些都是非常老的版本,0.8.x或者1.x.x,而我这个人有喜欢新鲜事儿,所以就冲着vlc-2.0.6来了。官网最新的是2.0.7,才发布没多久,在新鲜和稳定之间还是选了2.0.6,低一个版本的来调戏调戏。

        首先说编译环境,网上很多人在windows下用MINGW+MSYS或者Cygwin,这些玩意儿其实就是对linux环境的一个模拟,而且编译效率之低下,简直让人无法忍受,所以我就直接放弃在windows下编译windows版vlc的念头了,在Fedora17下用交叉编译工具mingw32-w64来编译。如果不了解什么是mingw32,建议去google一下,这个基础的不能再基础的东西就不在这里浪费笔墨了。闲话不表,进入正题:

    1、首先确认你的Fedora17系统安装了如下工具,否则就用yum一个个去安装,这是必须的步骤
    [root@localhost ~]#yum install libtool automake autoconf binutils gcc gcc-c++ glibc make cmake gettext zip pkgconnfig nsis lua-dev svn cvs git zip bzip2 zlib-devel wget xz
    不用担心,这些软件版在fedora 17自带的yum源里都找得到,上面一条命令下去就完事大吉了。除非你系统里安装了其他东西和上述软件冲突,这个问题就的自己一步一步去解决了。

    2、安装mingw32交叉编译工具
    [root@localhost ~]#yum install  
    mingw32-binutils mingw32-gcc mingw32-gcc-c++ 
    fedora 17的yum源里已经将mingw32默认全部升级成mingw32-w64了,也仅仅是从fedora17开始的,之前的版本据说执行完上述命令后实际上安装的mingw32,关于这一点还没确认,改天有空了再试一下fedora16。此时系统中会多出很多以i686-w64-mingw32-*开头的程序,如下:
    3、下载vlc-2.0.6的源码
    [root@localhost ~]#wget http://download.videolan.org/pub/videolan/vlc/2.0.6/vlc-2.0.6.tar.xz 

    4、解压源码到/usr/loca/src目录下。以xz结尾的文件要经过两层解压才可以得到源码,如下:
    [root@localhost ~]#xz -d vlc-2.0.6.tar.xz
    [root@localhost ~]#tar -xf vlc-2.0.6.tar -C /usr/local/src
    [root@localhost ~]#cd /usr/local/src/vlc-2.0.6

    5、进入到/usr/local/src/vlc-2.0.6目录之后依次执行下述操作
    [root@localhost vlc-2.0.6]#mkdir -p contrib/win32
    [root@localhost vlc-2.0.6]#cd contrib/win32
    [root@localhost win32]# ../bootstrap --host=i686-w64-mingw32
    [root@localhost win32]# make prebuilt
    上述操作时下载交叉编译vlc时所需要的第三方依赖包。如果按照教程来做的话,上述命令执行完过后系统中会多一个目录/usr/local/src/vlc-2.0.6/contrib/i686-w64-mingw32/

    6、在步骤5的基础上继续执行
    [root@localhost win32]# make .qt4
    这样会下载qt的软件包并将其编译成库文件,然后安装到正确的位置,如果不装qt的话最后在windows下运行vlc会没有界面,播放视频时没有菜单栏,这里需要注意。
    至此,编译vlc所需要的基础环境就搭建完成了。接下来就是漫长的编译过程了。

    7、切换到vlc-2.0.6源码解压后的根目录里
    [root@localhost win32]# cd /usr/local/src/vlc-2.0.6
    [root@localhost vlc-2.0.6]# mkdir win32 && cd win32
    [root@localhost win32]# ../bootstrap
    [root@localhost win32]#PKG_CONFIG=/usr/bin/pkg-config
            PKG_CONFIG_PATH=/usr/local/src/vlc-2.0.6/contrib/i686-w64-mingw32/lib/pkgconfig 
            LIBRARY_PATH=/usr/local/src/vlc-2.0.6/contrib/i686-w64-mingw32/lib 
            ../extras/package/win32/configure.sh
                --host=i686-w64-mingw32
                --with-contrib=/usr/local/src/vlc-2.0.6/contrib/i686-w64-mingw32
                --disable-dvdread
                --disable-shout

    如果不出问题的话,你将会看到如下的提示信息。如果出错的话就一点一点排查吧,不过如果是一个纯净的Fedora系统,完全按照文档来做的话是绝对不会出错的,呵呵。

    8、编译并打包
    [root@localhost win32]#make
    执行make时,有可能会在编译/usr/local/src/vlc-2.0.6/modules/lua目录时报错,修改办法也很简单,将/usr/local/src/vlc-2.0.6/modules/lua/Makefile里所有的-ldl项删掉,重新执行一次make命令就OK了。最后执行打包发布,以zip包的形式发布绿色纯净版:
    [root@localhost win32]#make package-win32-zip
    最终zip包的路径是/usr/local/src/vlc-2.0.6/win32/vlc-2.0.6-win32.zip,拿到windows赶紧运行一下:
    再和vlc官网发布的2.0.6的原版做个对比,不管是声音还是图像都很OK:

    谨以此文献给那些喜欢vlc但又被她折磨的死去活来的朋友们。

    PS:很多写文章的人既不实践,也不贴图,这样很容易误导大家,废了半天功夫结果最后瞎忙活,太耗费精力和青春了,所以关于技术还是那句话:实践出真知。
  • 相关阅读:
    HDU1542矩形面积并
    HDU5869树状数组+gcd预处理
    HDU5845 Best Division
    整体二分
    Lattice 的 Framebuffer IP核使用调试笔记之datasheet笔记
    DDR3详解(以Micron MT41J128M8 1Gb DDR3 SDRAM为例)
    ISD1700系列多段语音录放系列
    Lattice Diamond 学习之编译、检查和设置约束
    欧拉函数的几个性质及证明
    CF776B Sherlock and his girlfriend
  • 原文地址:https://www.cnblogs.com/weinyzhou/p/4983323.html
Copyright © 2011-2022 走看看