[工程構建] windows環境下編譯vlc源碼

前言:

最近需要對 vlc 源代碼進行編譯,官方提供了三種方式:

1)使用MinGW在linux環境下進行交叉編譯,在ubuntu環境下使用交叉編譯工具鏈編譯,生成能夠在windows平臺下運行的二進制文件,即MinGW+linux

2)使用windows平臺下的小型unix環境工具組——“MSYS”,再進入MSYS使用1)中的交叉編譯,即MSYS+MinGW+Windows

3)使用Cygwin ,在windows平臺下,直接編譯生成可在windows下運行的代碼,Cygwin是windows環境下模擬posix環境的一個工具套件,因此這個方案存在很多兼容性問題,而且對代碼實現也有一定要求,如果工程不是嚴格按照posix標準構建的,那麼在此環境下編譯勢必會遇到符號表找不到的問題。

目前官方推薦的是方案 1

 


 

環境搭建:

上面說到了需要使用ubuntu環境作爲編譯環境,因此這裏便需要搭建一個ubuntu環境,並在環境中準備相應的外圍軟件包。

虛擬機+外網:

這種條件,無需過多介紹,安裝ubuntu虛擬機,並使用apt-get安裝相應外圍軟件包即可,具體的依賴包和命令如下:

安裝交叉編譯工具:

  • gcc-mingw-w64-i686
  • g++-mingw-w64-i686
  • mingw-w64-tools

安裝依賴包:

  • lua (5.2)
  • all autotools: libtool, automake, autoconf, autopoint, make, gettext, pkg-config
  • qt4-dev-tools, qt5-default (or qt4-default if qt plugin build fails)
  • git, subversion cmake, cvs if you want to rebuild contribs
  • wine-dev for creating Win32 packages
  • zip [for creating .zip package], p7zip [for .7z package], nsis [for .exe auto-installer], bzip2 [for 'make prebuild]
# apt-get install lua5.2 libtool automake autoconf autopoint make gettext pkg-config
# apt-get install qt4-dev-tools qt5-default git subversion cmake cvs 
# apt-get install wine64-development-tools libwine-dev zip p7zip nsis bzip2
# apt-get install yasm ragel ant default-jdk protobuf-compiler dos2unix

虛擬機+無外網:

有些時候,虛擬機無法連接外網,這個時候我們就無法使用apt-get進行在線安裝,步驟有如下幾部:

1)選擇合適的apt-get源,這裏推薦2個源;

阿里雲:http://mirrors.aliyun.com/ubuntu/

北京理工大學:https://mirror.bjtu.edu.cn/ubuntu/

2)在源網站內找到符合自己虛擬機架構版本較新的 .deb 壓縮包;下一小節介紹如何查找 .deb文件

  • ubuntu 和 debian 同屬於 debian系列,他們使用 .deb作爲外圍軟件包的後綴,他們使用 dpkg進行包管理,對應的在線倉庫管理工具爲apt-get
  • centos 、suse、fedro 通屬於 redhat系列,他們使用 .rpm作爲外圍軟件包的後綴,他們使用 rpm進行包管理,對應的在線倉庫管理工具爲yum 和 dnf;

3)使用dpkg -i xxx.deb進行 xxx軟件包的安裝;

如果包之間存在相互依賴,那麼可以把所有包都放在同一個目錄下,然後 dpkg -i *.deb進行安裝

 


 

如何在apt-get源上查找deb文件?

可以按照如下步驟執行:

1)登錄ubuntu的官方包管理網站:https://packages.ubuntu.com/ , 查詢需要下載的包

2)在搜索結果中選擇相應的版本,各個版本的區別後續介紹

3)在彈出頁面中 拖到底 ,選擇符合自己需要的架構,這裏我們用的是ubuntu 64位,故選擇amd64,如果32位則選 i386,其他系統按實際情況選擇

4)點進去,你會看到這麼一句話

5)至此,我們便知道需要的包在  pool/universe/g/gcc-mingw-w64/ 這個路徑下, 有些時候,那麼拼接前面的apt-get源的地址便是:http://mirrors.aliyun.com/ubuntu/pool/universe/g/gcc-mingw-w64/,有些時候還會有 pool/main 路徑下的,主要就是 universe 和 main 這兩個目錄下;

6)跳轉到對應的路徑下載,下載的時候,需要看準架構

 


 

上傳deb文件到編譯機

首先我們需要把上一步中下載的deb包上傳到ubuntu機器上,可使用的工具有 scp、ftp、http、vm tools等等,由於scp 和 ftp依賴ssh服務,因此可能用不起來,vm tools是 vmware 自帶的,但是有時候用不起來,以上三種如果任意一種均可。

如果都不可用,那麼推薦使用http方式

此時主機上已經把所有依賴包下載完畢,我們先將所有deb文件打包成一個zip文件,再在虛擬機上通過瀏覽器訪問主機http服務:http://196.168.0.112:80/vlc-compile-needs.zip 。

這裏的196.168.0.112是主機ip

至此,準備工作已經完畢,下面使用dpkg進行deb包安裝。

 

注:虛擬機ip配置問題見:https://blog.csdn.net/ykun089/article/details/106787285

 


 

使用dpkg安裝deb包

1)將所有包解壓到同一個目錄下,然後全部安裝 dpkg -i *.deb

2)運行完畢後,會提示哪些包安裝失敗

3)以此單獨安裝這些包,並根據錯誤提示安裝相應的依賴包,目前已知的依賴包如下:

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章