天天看點

windows平台下vlc編譯之十:vlc-1.0.0的編譯

請移步https://higoge.github.io/,所有下載下傳資料在那個部落格都能找到。謝謝。 

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

        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). 密碼:發郵件給我([email protected]),我會告知。

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

            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

        然後在裡面執行

        将cygwin所有使用的dll重新rebase一遍,就能解決問題。

繼續閱讀