請移步https://higoge.github.io/,全部下載資料在那個博客都能找到。謝謝。 git
--------------------------------------------------------------------github
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×××地址。bootstrap
2010-04-15更新:vista或win7下面使用cygwin可能出現fork不出來的現象,解決方法見第8步。感謝vlc研究2羣hali的提醒和幫助。vim
1. Cygwin的安裝windows
Jeremiah繼續使用Cygwin-new(20081208)版。最新的Cygwin應該也問題不大。Cygwin-new(20081208)在個人公共郵箱提供了下載,具體下載方式爲:app
1). 登陸http://mail.qq.comcurl
2). 用戶名:jeremiah_vlc
3). 密碼:發郵件給我(jeremiah.vlc@gmail.com),我會告知。ide
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一遍,就能解決問題。