您的位置:首页 > 其它

windows平台下vlc编译之十:vlc-1.0.0的编译

2011-08-22 10:15 375 查看
VLC-1.0.0正式版已经发布。Jeremiah抽空编译测试了一下,发现没啥太大问题,比较好用,也更加人性化,增加了buffer的显示和历史输入的提示。在这Jeremiah想把VLC-1.0.0的编译过程写详细一些,省得大家再往前翻看以前的博客了。

2009-07-30更新:vlc-1.0.1编译,与vlc-1.0.0编译相同,提供vlc-1.0.1源码下载地址。
2010-04-15更新:vista或win7下面使用cygwin可能出现fork不出来的现象,解决方法见第8步。感谢vlc研究2群hali的提醒和帮助。

1. Cygwin的安装
Jeremiah继续使用Cygwin-new(20081208)版。最新的Cygwin应该也问题不大。Cygwin-new(20081208)在我的公共邮箱提供了下载,具体下载方式为:
1). 登录http://mail.qq.com
2). 用户名:jeremiah_vlc

3). 密码:发邮件给我(jeremiah.vlc@gmail.com),我会告知。
4). 在“我的文件夹”的“Jeremiah_VLC相关资源”有所有资料的超大附件连接。
安装过程中选择包为

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-1.0.0源码:http://download.videolan.org/pub/videolan/vlc/1.0.0/vlc-1.0.0.tar.bz2
vlc-1.0.1源码:http://download.videolan.org/pub/videolan/vlc/1.0.1/vlc-1.0.1.tar.bz2
库:http://download.videolan.org/pub/videolan/vlc/1.0.0/win32/contrib-1.0.0.tar.bz2
解压源码到~(/home/yourname)下,解压库到/下。这里的解压都可以直接用winrar解压,不过要选对目录哟,源码是解压在X:/cygwin/home/yourname下面,库是解压到X:/cygwin/下面。

3. 一点点清理工作
删除/usr/win32/bin下面的moc,rcc,uic这三个文件,注意,保留moc.exe,rcc.exe,uic.exe。

4. bootstrap
cd到vlc-1.0.0中执行

./bootstrap

成功后会显示

Successfully bootstrapped

5. configure
保存以下脚本为myvlc.sh

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

执行

./myvlc.sh

成功后会显示

libvlc configuration

--------------------

version : 1.0.0

system : mingw32

architecture : i686 mmx sse sse2

build flavour : debug devel

vlc aliases : cvlc rvlc svlc qvlc

plugins/bindings : activex mozilla

You can tune the compiler flags in vlc-config.

To build vlc and its plugins, type `./compile' or `make'.

6. 修改工作
(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) 修改share/Makefile.am第1行,share/Makefile第639行,share/Makefile.in第639行。

修改

MOSTLYCLEANFILES = $(nobase_vlcdata_DATA)



MOSTLYCLEANFILES = skins2/default.vlt

注意行数可能不对,请对照着改。
解释下这些错误的修改。
第一个错误主要是一个正则表达式,libtool的问题。
第二个错误因为在执行make package-win32-base的时候,会提示找不到某些manifest文件,所以注释掉,让它在打包的时候不去cp这些manifest。
第三个错误是vlc-1.0.0特有的。主要是执行make clean后再次make会出现No rule to make target `skins2/fonts/FreeSans.ttf'的错误。主要是clean的时候把FreeSans.ttf等文件给删除了,这样的修改防止了错误删除。

7. make
执行

make

应该不会报错,成功后,执行

make package-win32-base

就此搞定!

8. vista或win7有可能出现fork不出来的错误,如下:

8928 [main] perl 4540 C:\cygwin\bin\perl.exe: *** fatal error - unable to remap C:\cygwin\li

b\perl5\5.10\i686-cygwin\auto\File\Glob\Glob.dll to same address as parent(0x910000) != 0x9F000

0

8 [main] perl 4476 fork: child 4540 - died waiting for dll loading, errno 11

参考官网的解决方法:

It might fail with some unable to remap error <some_dll_file_name>. It seems you need to rebase all Cygwin DLLs: close all your cygwin applications and launch 'ash' from basic windows command prompt (Start -> Run -> cmd), from there run rebaseall (so start
e.g. C:\cygwin\bin\ash.exe and type there text below).

/bin/rebaseall -v

也就是在cmd下面运行

X:\cygwin\bin\ash.exe

然后在里面执行

/bin/rebaseall -v

将cygwin所有使用的dll重新rebase一遍,就能解决问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: