vlc编译(win7+cygwin)

Posted on 2012-11-21 17:02  whu_zhangyang  阅读(1146)  评论(0)    收藏  举报

简要介绍一下自己的经验。(注:我的电脑win7家庭普通版)

1.下载cygwin。版本:cygwin-new(20081208)要的话,联系我zhyang@whu.edu.cn(最新版本可能会有问题,没试过),只能安装到根目录下。

   用我给版本比较好,安装起来很方便,选择本地目录安装。安装目录为:

   Archive
            unzip
            zip
Devel
            autoconf
            automake
            binutils
            cvs
            gcc 
            gcc-core
            gcc-g++
            gcc-mingw
            gcc-mingw-core
            gcc-mingw-g++
            gdb
            gettext
            gettext-devel
            git
            libiconv
            libgcrypt-devel
            libtool
            make
            mingw-runtime
            nasm
            patchutils
            pkg-config
            subversion 
Editor
            vim 
Libs
            expat
            libgcrypt 

Web
            curl
            wget

2.vlc。版本:vlc-1.0.6,要的话也可以发,官网上也有http://www.videolan.org/vlc/

3.匹配库。版本:contribs-1.0.2-gcc-4.2.1-sjlj-runtime-3.15.2-only.tar_.bz2,同上。

4.vlc解压到:/cygwin/home/yourname/下,匹配库解压到:/cygwin下。

5.删除/usr/win32/bin下面的moc,rcc,uic这三个文件,注意,保留moc.exe,rcc.exe,uic.exe。

6.打开cygwin,cd vlc-1.0.6,然后./bootstrap

7.等一段时间会出现autoreconf的问题,用vi bootstrap找到该行,#把autoreconf注释掉,再来一次./bootstrap,这次应该会successfully。

8.制作一个脚本文件myvlc.sh:可以先创建myvlc.sh.txt,然后把以下内容拷贝进入:

PATH=/usr/win32/bin:$PATH \
PKG_CONFIG_LIBDIR=/usr/win32/lib/pkgconfig \
CPPFLAGS="-I/usr/win32/include -I/usr/win32/include/ebml" \
LDFLAGS=-L/usr/win32/lib \
CC="gcc -mno-cygwin" CXX="g++ -mno-cygwin" \
./configure \
--host=i686-pc-mingw32 \
--enable-nls --enable-sdl --with-sdl-config-path=/usr/win32/bin \
--enable-avcodec --enable-avformat --enable-swscale \
--enable-faad --enable-flac --enable-theora \
--enable-freetype \
--enable-fribidi \
--enable-live555 --with-live555-tree=/usr/win32/live.com \
--enable-caca --with-caca-config-path=/usr/win32/bin \
--with--config-path=/usr/win32/bin \
--with-dvdnav-config-path=/usr/win32/bin \
--disable-cddax --disable-vcdx --enable-goom \
--enable-twolame --enable-dvdread \
--enable-debug --enable-dca \
--disable-mkv --disable-taglib \
--disable-zvbi \
--enable-mozilla --with-mozilla-sdk-path=/usr/win32/gecko-sdk

接着删除.txt后缀即可。

9.用dos2unix myvlc.sh把脚本myvlc.sh转换为linux执行的格式。(可能会出现windows下空格在linux错误识别的现象)

10.执行./myvlc.sh(我执行的时候会出现一开有很多命令,几分钟后出现问题,全是黑屏,但拖动对话框又有命令显示,这应该是cygwin的问题,编译应该是没错的)

11.执行完脚本之后就是  make  了会出现一些问题,照我说的以下几个问题修改一下:(以下行数可能略有不同,对着代码修改就行)

(1) 修改libtool第144行。

修改
global_symbol_pipe=""

global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\(\\)\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1\\2\\3 \\3/p'"

(2) 注释掉Makefile.am第700,730,741行。

# cp "$(top_srcdir)/extras/package/win32/vlc.exe.manifest" "$(win3
2_destdir)/"

# cp $(top_srcdir)/projects/mozilla/npvlc.dll.manifest $(win32_des
tdir)/mozilla/

# cp $(top_srcdir)/projects/activex/axvlc.dll.manifest $(win32_des
tdir)/activex/

(3)由于官方使用了x264的库,而没有给出相应的contrib,1.0.2的contrib中x264有些过时,没有x264_encoder_delayed_frames函数。vlc-1.0.6还好只是一句打印信息用到了此函数,故注释之。

注释掉vlc-1.0.6的modules/codec/x264.c的1643行:

// msg_Dbg( p_enc, "framecount still in libx264 buffer: %d", x264_encoder_delayed_frames( p_sys->h ) );

继续make 应该就没有问题了(会出现9一样的问题,不过没大碍)。

12.接着make package-win32-base就ok了,在vlc-1.0.6/vlc1.0.6下可以找到.exe程序。

 

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3