vlc 编译过程(windows)

    网上已经有很多关于如何编译vlc的文章,但是到目前为止,在我的编译过程中还没有一篇文章覆盖了我所遇到的问题,所以我就将我的编译过程详细的纪录下来:
   注意:这是为了编译最基本的vlc,先把vlc主干编译出来,把整个过程理解透了之后再来处理一些细节和扩展的东西。 

    1. 准备编译环境
    安装cygwin,在网站http://www.cygwin.com/ 下载一个cygwin的安装程序setup.exe。然后点击setup.exe安装,建议首次安装以下载到本地的形式,为了以后方便,可以将所有的包都下载下来,至于镜像的话,国内的强烈推荐http://www.cygwin.cn/pub。 一般来说这个下载要很久,慢慢等,等下载完后开始安装,也建议点击全部安装(只要硬盘空间够大的话),注意以下的包是必须的,包括
   Archive       (目录)
      unzip  
      zip
    Devel
      autoconf
      automake
      binutils
      cvs
      expat
      gcc
      gcc-core
      gcc-g++
      gcc-mingw
      gcc-mingw-core
      gcc-mingw-g++
      gdb (如果你需要调试的话)
      gettext
      gettext-devel
      git (不一定需要)
      libiconv
      libtool
      make
      mingw-runtime
      nasm
      patchutils
      pkg-config
      subversion
    Editor
      vim (有了它方便点)
    Libs
      libgcrypt
    Web //这两个可以不要,如果你不想编译第三方库
      curl (optional: for building extras/contrib)
      wget (optional: for building extras/contrib)

    2. 下载源代码
    到download.videolan.org/pub/videolan/vlc/ 下载一个最新的vlc源码包vlc-0.8.6h.tar.bz2, 解压 tar zxf vlc-0.8.6h.tar.bz2

    3. 下载对应的contrib 库
    到download.videolan.org/pub/testing/win32/下载一个对应的编译好的win 第三方包contrib-0.8.6e-gcc-3.4.5-only.tar.bz2,如果需要编译这部分代码可以参考别的文档,我们可以先采用这些已经编译好的包,先理解透主要的东西,再理解扩展的东西。解压到指定位置: tar jxf contrib-0.8.6e-gcc-3.4.5-only.tar.bz2 -C /, 注意,这个包虽然言明是针对gcc 3.4.5的,但是还是支持3.4.4的

    4. 书写编译的shell文件
   在 vi中新建一个文件, 命名为configure-vlc.sh,加上执行权限。内容如下:
./bootstrap
PATH=/usr/win32-branch/bin:$PATH /
PKG_CONFIG_PATH=/usr/win32-branch/lib/pkgconfig /
CPPFLAGS="-I/usr/win32-branch/include -I/usr/win32-branch/include/ebml" /
LDFLAGS=-L/usr/win32-branch/lib /
CC="gcc -mno-cygwin" CXX="g++ -mno-cygwin" /
./configure /
    --host=i686-pc-mingw32 /
    --disable-gtk /
    --enable-nls --enable-sdl --with-sdl-config-path=/usr/win32-branch/bin /
    --enable-ffmpeg --with-ffmpeg-mp3lame --with-ffmpeg-faac /
    --with-ffmpeg-zlib --enable-faad --enable-flac --enable-theora /
    --with-wx-config-path=/usr/win32-branch/bin /
    --with-freetype-config-path=/usr/win32-branch/bin /
    --with-fribidi-config-path=/usr/win32-branch/bin /
    --enable-live555 --with-live555-tree=/usr/win32-branch/live.com /
    --enable-caca --with-caca-config-path=/usr/win32-branch/bin /
    --with-xml2-config-path=/usr/win32-branch/bin /
    --with-dvdnav-config-path=/usr/win32-branch/bin /
    --disable-cddax --disable-vcdx --enable-goom /
    --enable-twolame --enable-dvdread /
    --enable-release --enable-dca /
    --enable-mkv /
    --enable-quicktime --enable-mozilla /
    --with-mozilla-sdk-path=/usr/win32-branch/gecko-sdk /
    --enable-mostly-builtin

    5. 修改文件
    修改文件: /usr/i686-pc-mingw32/include/sys/stat.h的文件
diff stat.h stat.h_ori
    <       long    st_size;        /* File size in bytes */
---
>       _off_t st_size;        /* File size in bytes */
113c113
<       long    st_size;        /* File size in bytes */
---
>       off_t   st_size;        /* File size in bytes */
   修改这个主要是为了防止编译凡是vlc调用了stat.h的地方都会出错,其实比较好的办法是修改vlc本身的代码,但是我查询了一下,发现调用的地方还比较多,并且这个修改不影响cygwin本身的定义,所以就偷个懒。

   修改 vlc-config文件去掉了plugin: access_gnomevfs,因为发现编译这个的时候老是报错,先保证主意的能编译通过。

    6. 编译
   执行 ./configure-vlc.sh, 这个会自动生成所有的Makefile文件
   执行 make,会编译所有相关的库和可执行文件,这个过程比较漫长,可以继续作别的事情。

    7. 修改权限
    编译完之后,需要修改相关文件的权限,chmod +x vlc.exe vlc.exe.manifest

你可能感兴趣的:(流媒体)