Fedora 17下交叉編譯vlc-2.0.6-win32小記

關於編譯windows下的vlc網上的教程除了翻譯N年前wiki官網的那些螞蟻文之外,可以說基本沒啥參考意義和價值。因爲那些都是非常老的版本,0.8.x或者1.x.x,而我這個人有喜歡新鮮事兒,所以就衝着vlc-2.0.6來了。官網最新的是2.0.7,才發佈沒多久,在新鮮和穩定之間還是選了2.0.6,低一個版本的來調戲調戲。

    首先說編譯環境,網上很多人在windows下用MINGW+MSYS或者Cygwin,這些玩意兒其實就是對linux環境的一個模擬,而且編譯效率之低下,簡直讓人無法忍受,所以我就直接放棄在windows下編譯windows版vlc的念頭了,在Fedora17下用交叉編譯工具mingw32-w64來編譯。如果不瞭解什麼是mingw32,建議去google一下,這個基礎的不能再基礎的東西就不在這裏浪費筆墨了。閒話不表,進入正題:

1、首先確認你的Fedora17系統安裝瞭如下工具,否則就用yum一個個去安裝,這是必須的步驟
[root@localhost ~]#yum install libtool automake autoconf binutils gcc gcc-c++ glibc make cmake gettext zip pkgconnfig nsis lua-dev svn cvs git zip bzip2 zlib-devel wget xz
不用擔心,這些軟件版在fedora 17自帶的yum源裏都找得到,上面一條命令下去就完事大吉了。除非你係統裏安裝了其他東西和上述軟件衝突,這個問題就的自己一步一步去解決了。

2、安裝mingw32交叉編譯工具
[root@localhost ~]#yum install  
mingw32-binutils mingw32-gcc mingw32-gcc-c++ 
fedora 17的yum源裏已經將mingw32默認全部升級成mingw32-w64了,也僅僅是從fedora17開始的,之前的版本據說執行完上述命令後實際上安裝的mingw32,關於這一點還沒確認,改天有空了再試一下fedora16。此時系統中會多出很多以i686-w64-mingw32-*開頭的程序,如下:
3、下載vlc-2.0.6的源碼
[root@localhost ~]#wget http://download.videolan.org/pub/videolan/vlc/2.0.6/vlc-2.0.6.tar.xz 

4、解壓源碼到/usr/loca/src目錄下。以xz結尾的文件要經過兩層解壓纔可以得到源碼,如下:
[root@localhost ~]#xz -d vlc-2.0.6.tar.xz
[root@localhost ~]#tar -xf vlc-2.0.6.tar -C /usr/local/src
[root@localhost ~]#cd /usr/local/src/vlc-2.0.6

5、進入到/usr/local/src/vlc-2.0.6目錄之後依次執行下述操作
[root@localhost vlc-2.0.6]#mkdir -p contrib/win32
[root@localhost vlc-2.0.6]#cd contrib/win32
[root@localhost win32]# ../bootstrap --host=i686-w64-mingw32
[root@localhost win32]# make prebuilt
上述操作時下載交叉編譯vlc時所需要的第三方依賴包。如果按照教程來做的話,上述命令執行完過後系統中會多一個目錄/usr/local/src/vlc-2.0.6/contrib/i686-w64-mingw32/

6、在步驟5的基礎上繼續執行
[root@localhost win32]# make .qt4
這樣會下載qt的軟件包並將其編譯成庫文件,然後安裝到正確的位置,如果不裝qt的話最後在windows下運行vlc會沒有界面,播放視頻時沒有菜單欄,這裏需要注意。
至此,編譯vlc所需要的基礎環境就搭建完成了。接下來就是漫長的編譯過程了。

7、切換到vlc-2.0.6源碼解壓後的根目錄裏
[root@localhost win32]# cd /usr/local/src/vlc-2.0.6
[root@localhost vlc-2.0.6]# mkdir win32 && cd win32
[root@localhost win32]# ../bootstrap
[root@localhost win32]#PKG_CONFIG=/usr/bin/pkg-config \
        PKG_CONFIG_PATH=/usr/local/src/vlc-2.0.6/contrib/i686-w64-mingw32/lib/pkgconfig \
        LIBRARY_PATH=/usr/local/src/vlc-2.0.6/contrib/i686-w64-mingw32/lib \
        ../extras/package/win32/configure.sh \
            --host=i686-w64-mingw32 \
            --with-contrib=/usr/local/src/vlc-2.0.6/contrib/i686-w64-mingw32 \
            --disable-dvdread \
            --disable-shout

如果不出問題的話,你將會看到如下的提示信息。如果出錯的話就一點一點排查吧,不過如果是一個純淨的Fedora系統,完全按照文檔來做的話是絕對不會出錯的,呵呵。

8、編譯並打包
[root@localhost win32]#make
執行make時,有可能會在編譯/usr/local/src/vlc-2.0.6/modules/lua目錄時報錯,修改辦法也很簡單,將/usr/local/src/vlc-2.0.6/modules/lua/Makefile裏所有的-ldl項刪掉,重新執行一次make命令就OK了。最後執行打包發佈,以zip包的形式發佈綠色純淨版:
[root@localhost win32]#make package-win32-zip
最終zip包的路徑是/usr/local/src/vlc-2.0.6/win32/vlc-2.0.6-win32.zip,拿到windows趕緊運行一下:
再和vlc官網發佈的2.0.6的原版做個對比,不管是聲音還是圖像都很OK:

謹以此文獻給那些喜歡vlc但又被她折磨的死去活來的朋友們。

PS:很多寫文章的人既不實踐,也不貼圖,這樣很容易誤導大家,廢了半天功夫結果最後瞎忙活,太耗費精力和青春了,所以關於技術還是那句話:實踐出真知。
發佈了181 篇原創文章 · 獲贊 15 · 訪問量 42萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章