简要介绍一下自己的经验。(注:我的电脑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程序。
|