很久以前整理的文章,沒什麼技術含量,但自己實踐過,按照上面的步驟能成功編譯。對跟我一樣剛剛接觸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://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
解壓後把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
則會生成相應的壓縮文件。