Windows下编译VLC2.2.1
----CygWin环境
引言:
编译VLC是件很头疼的事,运气好,一两个小时就搞定,运气不好,像我倒腾了两周才搞定。网上各种查,都没解决,他们虽然编译过了,可给的步骤却缺胳膊少腿的。最后没办法只能求助官网,可官网,如果不仔细再仔细,恐怕也是编不过。官网wiki:https://wiki.videolan.org/Win32Compile/。在编译前还是先看看。尤其这个网页,要仔细看。
看”Complier and binary toolchain”这部分。注意有 mingw-w64 和 mingw32。这两个要分清楚。后者是2.0.x以前版本的编译环境。前者是2.0.之后版本的环境。所以安错的版本,你就会很郁闷的,会遇到很多错误。
准备工作
CygWin
1 下载cygwin , URL: https://www.cygwin.com/
2 安装 Cygwin
3 安装相关的packages 。VLC需要用到的有以下:
Archive
unzip
zip
Devel
autoconf
automake
binutils //这个编译不过换成mingw64-i686-binutils
cvs
gcc-core
gcc-g++
mingw64-i686-gcc-g++
mingw64-i686-gcc-core
mingw64-i686-runtime
mingw64-i686-pkg-config
gdb //调试用
gettext
gettext-devel
git
libgcrypt-devel
libiconv
libtool
make
nasm
patchutils
subversion
Editor
vim
Libs
expat
libgcrypt
Web
curl (optional: for building extras/contrib)
wget (optional: for building extras/contrib)
Utils
ncurses
如果环境编译过程中出现问题,把上面相关的包换成mingw64-i686开头的。基本就OK了。
注意:在编译2.0之后用的是。mingw64-i686相关的包。
下载VLC源码
可以用Git
git clone git://git.videolan.org/vlc.git 这个版本可能编译不过,你可以git前一个版本
也可以在官网上直接下。
把源文件放到cygwin\home\{youname}\下
下载vlc-contrib-i686-w64-mingw32-latest.tar.bz2
ftp://ftp.videolan.org/pub/videolan/contrib/i686-w64-mingw32/
这个可以不用下载。在编译配置时自动下载,但网络等各种原因,还是先下下来,避免后面出现未知的问题。
把源文件放到cygwin\home\{youname}\下
编译
1打开cygwin 输入如下命令:
$ ls
结果应该至少有:
vlc-2.2.1_src.tar.xz vlc-contrib-i686-w64-mingw32-latest.tar.bz2rcc.exe
三个文件。其中rcc.exe是从vlc-contrib-i686-w64-mingw32-latest.tar.bz2提取出来的,因为不知出于什么考虑,在执行过程中rcc.exe被删掉了。放在这里为以后恢复用。
2 进入vlc2.2.1\contrib 如下命令:
$cd vlc2.2.1\contrib
$mkdir win32 && cd win32
$ mv ~/vlc-contrib-i686-w64-mingw32-latest.tar.bz2 vlc-contrib-i686-w64-mingw32-latest.tar.bz2
这里把vlc-contrib-i686-w64-mingw32-latest.tar.bz2 拷贝到了contrib\win32下面,防止脚本自动去更新到最新库。
3 编译
$ ../bootstrap --build=i686-w64-mingw32
$ make prebuilt
这地方要看你环境配置的怎样。
会出现:
tar: i686-w64-mingw32/include/openjpeg.h:无法创建到 “openjpeg-1.5/openjpeg.h” 的符号连接: No such file or directory
错误,这个错误可以不用关心。后面没什么大的影响。至于上面是否顺利不顺利过,这时就体现人品了。
4 清理工作
$ rm ../i686-w64-mingw32/bin/{luac,moc,rcc,uic}
5 恢复rcc.exe
$ cp /cygdrive/d/rcc.exe ../i686-w64-mingw32/bin
$ cd ../../ # 回到vlc源码根目录
由于RCC.exe在执行make prebuilt后被删掉,这个文件可以vlc-contrib-i686-w64-mingw32-latest.tar.bz2这里面找到。故手动恢复一下
6 编译源码
$ ./bootstrap
7配置:
$ mkdir win32 && cd win32
$ ../extras/package/win32/configure.sh --host=i686-w64-mingw32 --disable-nls
注:1 如果想禁掉某个功能,可以修改extras/package/win32/configure.sh配置文件,也可以在该命令后添加。
2 修改完configure.sh后,必须执行
dos2unix.exe ../extras/package/win32/configure.sh
否则,你编不过哟。
3 --host=i686-w64-mingw32 这个参数必须制定,否则,你可以试试,O(∩_∩)O哈哈~
8配置完成后:会出现:
libvlc configuration -------------------- version : 2.2.1 system : mingw32 architecture : i686 mmx sse sse2 optimizations : yes vlc aliases : cvlc rvlc qvlc svlc To build vlc and its plugins, type `make', or `./compile' if you like nice colors.
说明你离成功一大半了。
9 MAKE 吧
根据CPU内核个数,执行make
命令。
make -j4
如果失败了,可以修改配置文件不编译某些插件。
10 打包
make package-win-common
make package-win32-zip
注:以上方法本人编译过了,但并不能确保你编过,基本是这几步,如果编译不过好好看看wiki。目前git的最新版本时编译不过的。
你可以git 前一个版本;