WINDOWS平臺下VLC的編譯

很久以前整理的文章,沒什麼技術含量,但自己實踐過,按照上面的步驟能成功編譯。對跟我一樣剛剛接觸VLC的同鞋們或許有所幫助。


Windows平臺下Vlc的編譯

根據VLC官網中的說法,一般在Windows下編譯有兩種方法,一種是用Cygwin編譯,但據說這已經Outdated了,另一種則是官方推薦的編譯方法:MSYS+MINGW。

一開始用Cygwin來編譯,但頻頻出錯,大部分時間都用在排除錯誤上了,最後也沒有編譯成功。後來在老師的指點下選擇用MSYS+MINGW來編譯,花了半天時間就完成了。在這裏總結一下用MSYS+MINGW來編譯VLC相關的編譯步驟(以下下編譯步驟來自VLC官網http://wiki.videolan.org/Win32CompileMSYSNew,但我做了翻譯和整理,而且把編譯過程中可能出現的問題以及解決辦法做了簡單的小結)。

一、什麼是MSYS?
    MSYS: Minimal GNU(POSIX)system on Windows,是一個小型的GNU環境,包括基本的bash,make等等。是Windows下最優秀的GNU環境。(是否厭倦了Cygwin蝸牛般的shell環境,試試MSYS中的rxvt吧)

  MinGW:即Minimalist GNU for Windows。它是一些頭文件和函數庫的集合,該集合允許人們在沒有第三方動態鏈接庫的情況下使用GCC(GNU Compiler C)產生Win32程序。

MinGW主要由GNU binary utilities、GCC和GDB組成。同時還包括一些必要的庫,例如libc(C Runtime),及專門用於Win32環境的API接口庫。如果你想學習linux環境下的編程,而又不想裝linux,那你就裝一個MinGW吧。

(以上資料來自百度百科)

二、 配置編譯環境

這是編譯VLC最麻煩也最爲關鍵地方。

1. 準備工作

Ø 電腦上必需有文本編輯器,用記事本或者寫字板都行(用於打開和修改腳本文件)

Ø 安裝解壓工具7-zip(許多官網下載的壓縮包格式都是基於LINUX的,擴展名爲.tar.gz, .tar.bz2, .tar.lzma等,常用的解壓軟件WinRAR無法解壓)。

Ø 確保WINDOWS用戶名不包含空格(VLC不會建立在一個文件名中包含空格的文件夾內)

2. 安裝MinGW

2.1  TDM / MinGW的安裝

可以點擊以下鏈接下載並安裝:http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/tdm-gcc-4.5.2.exe/download

安裝嚮導:

Ø  取消選擇"Check for updatedfiles..."

Ø  選擇“Create”

Ø  安裝到C:\MinGW

Ø  保持默認設置

Ø  事後檢查 C:\MinGW\bin是否被添加到Windows的環境變量中,如果沒有,請自己添加。方法如鏈接:(http://www.computerhope.com/issues/ch000549.htm

2.2  MinGW-utils的安裝
下載並安裝MinGW - utils:http://prdownloads.sourceforge.net/mingw/mingw-utils-0.3.tar.gz
提取內容到C:\ MinGW

3. MSys

3.1  MSYS的安裝

Ø  可以點擊以下鏈接下載並安裝:http://sourceforge.net/project/downloading.php?group_id=2435&filename=MSYS-1.0.11.exe

Ø  通過安裝嚮導,並默認安裝到 C:\Msys\1.0

Ø  在自動彈出的命令窗口中,回答如下問題:

Accept Post Install: [y]

MinGW Installed? :   [y]

path to MinGW:       [c:/MinGW]

3.2 MSys Developer Toolkit(Msys開發工具包)的安裝

Ø 可以點擊以下鏈接下載並安裝,按照安裝嚮導選擇默認安裝即可

http://downloads.sourceforge.net/mingw/msysDTK-1.0.1.exe

3.3 AutoToolsand libcrypt(用於更新MSYS安裝目錄中的文件)

按以下鏈接下載autoconf, automake, libtool 和libcrypt文件的壓縮包,並解壓到C:\Msys\1.0中:

Ø  http://sourceforge.net/projects/mingw/files/MSYS/autoconf/autoconf-2.63-1/autoconf-2.63-1-msys-1.0.11-bin.tar.lzma/download

Ø  http://sourceforge.net/projects/mingw/files/MSYS/automake/automake-1.11-1/automake-1.11-1-msys-1.0.11-bin.tar.lzma/download

Ø  http://sourceforge.net/projects/mingw/files/MSYS/libtool/libtool-2.2.7a-1/libtool-2.2.7a-1-msys-1.0.11-bin.tar.lzma/download

Ø  http://prdownloads.sourceforge.net/mingw/libcrypt-1.1_1-2-msys-1.0.11-dll-0.tar.lzma

這裏需要特別注意的是解壓後的壓縮包一般都有bin和share兩個文件夾,把文件夾裏面的文件拷到C:\Msys\1.0相應的文件夾即可,不要把整個文件夾替代C:\Msys\1.0中的文件夾。如autoconf-2.63-1-msys-1.0.11-bin.tar解壓後有bin文件夾,只需要把bin文件夾裏文件複製到C:\msys\1.0\bin裏即可。

3.4 Glib and PKG-CONFIG

跟上面類似,下載以下文件包,解壓到C:\Msys\1.0相應文件夾裏。

Ø  http://ftp.gnome.org/pub/GNOME/binaries/win32/glib

Ø  ftp://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.23-3_win32.zip

Ø  ftp://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config-dev_0.23-3_win32.zip

Ø  http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime_0.18.1.1-2_win32.zip

要注意的是第一個鏈接下載時需選擇最新版本,現在最新版是glib 2.28,點擊進入2.28文件夾後可以看到兩個鏈接:

glib-dev_2.28.1-1_win32.zip     19-Feb-2011 13:08  2.7M  
glib_2.28.1-1_win32.zip         19-Feb-2011 13:10  2.4M  
選擇第二個非DEV版即可

3.5  Add pkg config path variable(添加PKG配置路徑變量)

打開C:\msys\1.0下的msys.bat命令行窗口,輸入

set PKG_CONFIG_PATH=/win32/lib/pkgconfig

回車即可

3.6 更改 libtool 的搜索路徑

打開C:\MSys\1.0\bin\中的libtool文件,添加目錄 /mingw/lib到9992行“compiler_lib_search_dirs=”的末尾(可以用搜索的辦法查找到該行),最後該行的完整內容應該是這樣的:

compiler_lib_search_dirs="/usr/lib /usr/lib /bin/../lib/gcc-lib/i686-pc-msys/2.95.3-1 /bin/../lib/gcc-lib /usr/lib/gcc-lib/i686-pc-msys/2.95.3-1 /bin/../lib/gcc-lib/i686-pc-msys/2.95.3-1/../../../../i686-pc-msys/lib /usr/lib/gcc-lib/i686-pc-msys/2.95.3-1/../../../../i686-pc-msys/lib /mingw/lib"

4.  安裝LUA tools

4.1  LUA工具包

VLC使用Lua編寫的腳本語言,但官方下載的lua工具包中並沒有相應的二進制文件,所以需要重新編譯它。

可以從以下地址下載LUA工具包:http://www.lua.org/ftp/lua-5.1.4.tar.gz

解壓到以下文件夾:C:\MSys\1.0\home\<username>其中,username爲你當前的Windows的用戶名。

運行C:\MSys\1.0\msys.bat

鍵入以下命令:

cd /home/<username>/lua-5.1.4 
make mingw

命令運行結束後你可以在src目錄中看到以下文件:lua.exe, luac.exe,lua51.dll

用命令的方式將這些文件加入到 /bin目錄下:

cd src 
cp *.exe /bin
cp *.dll /bin
cd ..

4.2  Precompiled contribs

可以按以下鏈接下載contribs:http://people.videolan.org/~jb/Contribs/contrib-20100608-win32-bin-gcc-4.4.4-runtime-3.17-only.tar.bz2

或者下載最新的contirb:http://people.videolan.org/~jb/Contribs/

下載後解壓,解壓後會有一個名爲usr的文件夾,然後把裏面的子文件夾win32複製到C:\MSys\1.0目錄下。最後,win32中的文件libdvdnav.a的絕對路徑應該是這樣的:

C:\MSys\1.0\win32\lib\libdvdnav.a

 

5.VLC sources(VLC源文件)

5.1  VLC 版本: 1.1.0rc3

Ø  下載:http://download.videolan.org/pub/videolan/testing/vlc-1.1.0-rc3/vlc-1.1.0-rc3.tar.bz2

Ø  解壓到C:\MSys\1.0\home\<username>

Ø  把vlc-1.1.0-rc3文件夾重命名爲vlc

5.2添加配置文件 configure-msys (1.1.x only)

下載 地址:http://git.videolan.org/?p=vlc.git;a=blob_plain;f=extras/package/win32/configure-msys.sh;hb=HEAD

保存到C:\msys\1.0\home\<username>\vlc\extras\package\win32\configure-msys.sh

注意:下載的文件名爲extras_package_win32_configure-msys.sh,保存的時候需要改爲configure-msys.sh

5.3添加配置文件 configure-common (1.1.x only)

Download: http://git.videolan.org/?p=vlc.git;a=blob_plain;f=extras/package/win32/configure-common.sh;hb=HEAD
保存到:C:\msys\1.0\home\<username>\vlc\extras\package\win32\configure-common.sh

同上,保存的時候需要將此文件(extras_package_win32_configure-common.sh)命名爲configure-common.sh

6. 最後的更改 : whoami and hostname

Download: http://sourceforge.net/projects/mingw/files/MSYS/BaseSystem/coreutils/coreutils-5.97-2/coreutils-5.97-2-msys-1.0.11-ext.tar.lzma/download

解壓後把bin文件夾裏面的三個可執行文件who.exe, whoami.exe 和 hostname.exe複製到C:/MSys/1.0/bin裏面

三、編譯

Ø  Bootstrap

打開C:\MSys\1.0\msys.bat,運行命令行:

cd vlc
cp -v /usr/win32/share/aclocal/* m4/
cp -v /usr/share/aclocal/* m4/
PATH=/usr/win32/bin:$PATH ./bootstrap

運行成功後會顯示:Successfullybootstrapped

 

Ø  Configure

sh extras/package/win32/configure-msys.sh
 

成功運行結束後會顯示如下結果:

libvlc configuration

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

version              : 1.1.0-rc3

system               : mingw32

architecture         : i586 mmx sse sse2

build flavour        : debug

vlc aliases          : cvlc rvlc svlc qvlc

plugins/bindings     : activex

You can tune the compiler flags in vlc-config.

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

 

Ø  Make (compile)

運行命令:

PATH=/usr/win32/bin:$PATH make

如果這一步出錯可以採取以下步驟:

l  返回到步驟4.2,下載最新版本的contrib

l  在腳本文件configure-msys.sh中添加--disable-upnp

 

如果沒有問題的話編譯就正式開始了,這一步花的時間比較長,大概要一兩個小時。

Ø  Create self-contained packages

編譯成功後,生成的一些文件跟源代碼一起雜亂的放在C:\msys\1.0\home\zou\vlc下, 在其中可以找到vlc.exe,但雙擊運行時卻出現了錯誤:

這是因爲在該目錄下找不到相應的庫文件的緣故。

 

下一步是把編譯生成的相關文件打包放在一個文件夾內,用make命令即可實現此功能:

make package-win32-base

命令執行完之後可以在C:\msys\1.0\home\zou\vlc下發現多出了兩個文件夾:symbols-1.1.0-rc3和vlc-1.1.0-rc3。其中vlc-1.1.0-rc3就是從網上下載的VLC客戶端軟件包解壓後的文件夾。雙擊裏面的vlc.exe即可正常運行。

        

若運行命令:

make package-win32-zip

則會生成相應的壓縮文件。

 


發佈了22 篇原創文章 · 獲贊 8 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章