一开始使用cygwin编译VLC2.0.0,解决完一堆的问题之后,出现"Undefine refrence to _Unwind_Sjlj_Resume_" ,看起来是mingw编译器的问题,各种方法都试过了,还是没法继续编译。于是使用另一种方法,linux环境下用交叉编译工具mingw进行编译,终于了生成可运行的VLC。这种方法需要联网获取一些新的第三方库和工具。编译前准备,虚拟机,Ubuntu 10.04
安装交叉编译工具链
apt-get install gcc-mingw32 mingw32-binutils
安装一些必要的工具
apt-get install lua5.1
apt-get install libtool automake autoconf autopoint make gettext
apt-get install pkg-config
apt-get install git
apt-get install subversion
apt-get install cmake cvs <=用于编译第三方库,对于直接下载编译好的可以不用
apt-get install zip p7zip nsis bzip2 <=用于打包,nsis可以生成自动安装的包
获取最新的VLC源码,vlc-2.0.4
git clone git://git.videolan.org/vlc.git vlc
cd vlc
安装第三方库
mkdir -p contrib/win32
cd contrib/win32
../boostrap --host=i586-mingw32msvc
make prebuilt <=自动下载已经编译好的第三方库并安装
回去VLC目录运行bootstrap
cd ../../
./boostrap
创建一个输出目录
mkdir win32
cd win32
运行configure配置脚本 ,可以使用--disable-**去掉不想要的功能
../configure --host=i586-mingw32msvc
make
编译的时候出现错误
dialogs/preferences.hpp:72:19: error: expected unqualified-id before 'char'
dialogs/preferences.hpp:72:18: error: expected ';' at end of member declaration
dialogs/preferences.hpp:72:24: error: expected unqualified-id before ',' token
locate vlc_windows_interfaces.h
找到vlc_windows_interfaces.h
在 37 行#include 后加一行
#undef small
即可编译通过。
最后打包
make package-win32-strip
make package-win32
通过!可以用这个编译activex控件了!使用activex控件的时候可以精简一下plugins dll。
阅读(7373) | 评论(0) | 转发(1) |