Windows平台下Vlc的编译

时间:2022-11-01 04:54:30

根据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

则会生成相应的压缩文件。