window下使用mingw编译vlc-2.1.0-git
官网的编译教程:http://wiki.videolan.org/Win32CompileMSYS
编译的各种问题:http://wiki.videolan.org/Win32CompileMSYSTroubleShooting
已经编译好的各种版本:http://nightlies.videolan.org/build/
VS下编译项目:https://github.com/sunqueen?tab=repositories
VLC文档:http://www.videolan.org/developers/vlc/doc/doxygen/html/index.html
准备编译环境
MinGW
TDM/MinGW :http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/tdm-gcc-4.7.1-2.exe/download
- 选择 "Create"
- 选择 32bits
- 安装至 D:\ProgramTools\MinGW32
- 保持默认设置
MSys
MSys压缩包: http://people.videolan.org/~jb/msys/msys.7z
解压至于 D:\ProgramTools\MinGW32\msys.
使用 D:\ProgramTools\MinGW32\msys\msys.bat 来进行下面的命令行
下载vlc源码
git clone git://git.videolan.org/vlc.git
下载vlc依赖的gun工具
可以进入源代码目录执行:
cd vlc/extras/tools
./bootstrap
这样可以显示出vlc需要的gun工具,执行make命令可以自动下载编译,但是这样做太慢了
我们要手动下载编译好的二进制文件丢进D:\ProgramTools\MinGW32\msys目录下就可以了
- http://sourceforge.net/projects/mingw/files/MSYS/msysdev/autoconf/autoconf-2.68-1/autoconf-2.68-1-msys-1.0.17-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/msysdev/automake/automake-1.11.1-1/automake-1.11.1-1-msys-1.0.13-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/msysdev/libtool/libtool-2.4-1/libtool-2.4-1-msys-1.0.15-bin.tar.lzma/download
- http://prdownloads.sourceforge.net/mingw/libcrypt-1.1_1-2-msys-1.0.11-dll-0.tar.lzma
- http://sourceforge.net/projects/mingw/files/MSYS/Extension/perl/perl-5.8.8-1/perl-5.8.8-1-msys-1.0.17-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Extension/m4/m4-1.4.14-1/m4-1.4.14-1-msys-1.0.13-bin.tar.lzma/download
- http://ftp.gnome.org/pub/GNOME/binaries/win32/glib (这里手动选择最新的non-dev版本)
- 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
- http://www.jgoettgens.de/Meine_Bilder_und_Dateien/ragel-vs2012.7z
之后运行
make
接着
export HOME= [你的vlc源代码目录]
export PATH=$PATH:$HOME/vlc/extras/tools/build/bin/
测试:
autoconf --version
能出现 autoconf 的版本信息 说明路径已正确了
下载contrib
cd vlc/contrib mkdir win32 && cd win32 ../bootstrap --build=i586-mingw32msvc make prebuilt cd .. ln -sf i586-mingw32msvc mingw32 export PATH=$PATH:$HOME/vlc/contrib/mingw32/bin/ rm $HOME/vlc/contrib/mingw32/bin/moc $HOME/vlc/contrib/mingw32/bin/uic $HOME/vlc/contrib/mingw32/bin/rcc
也可以手动下载对应的预编译库:ftp://ftp.videolan.org/pub/videolan/contrib/
测试:
moc -v
能显示moc 的版本信息 说明路径正确
编译VLC
Bootstrap
在vlc源码根目录执行:
./bootstrap
出现问题:
"/bin/m4: cannot remove temporary directory /tmp/..."
这时候可以执行
dos2unix configure.ac
将 configure.ac 文件转换成Unix的换行格式
Configure
接着执行:
mkdir win32 cd win32 sh ../extras/package/win32/configure.sh --host=i586-pc-mingw32msvc --disable-nls
我使用的命令 :sh ../extras/package/win32/configure.sh --host=i586-pc-mingw32msvc --disable-nls --enable-debug --enable-gprof
关于配置选项的官网资料:
http://wiki.videolan.org/VLC_configure_helphttp://wiki.videolan.org/Configurehttp://wiki.videolan.org/Configure
Make
最后执行:
make -j4
出现问题:
“/libFLAC.a(bitwriter.o):bitwriter.c:(.text+0x3fb): undefined refer
ence to `_ntohl@4'这是由于contrib里面的某个库没有链接ws2_32库导致的
根据错误信息,发现是\vlc\win32\modules\codec这个文件夹下发生的
打开该文件夹下的 Makefile 文件,搜索“-lFLAC”
找到两处地方
FLAC_LIBS = -Le:/tianminProject/VLC/vlc/contrib/mingw32/lib -lFLAC -lm -logg
LIBS_flac = -Le:/tianminProject/VLC/vlc/contrib/mingw32/lib -lFLAC -lm -logg
分别在末尾 添加 -lws2_32 ,链接 ws2_32 库
可以执行打包命令:
make package-win32-zip
打包包含debug信息zip:
make package-win32-debug-zip
opensuse下使用qt creator调试vlc-2-0-5
参考链接:http://blog.csdn.net/lovey599/article/details/7062304
opensuse下编译vlc-2-0-5
官方编译说明文档:UnixCompile
获取源码:
git clone git://git.videolan.org/vlc.git
然后执行:
cd vlc
./bootstrap
添加源到系统:
sudo zypper ar http://download.videolan.org/pub/vlc/SuSE/<openSUSEversion> VLC
下载编译vlc依赖的库:
sudo zypper si -d vlc
配置:
mkdir win32 cd win32 ../configure --enable-run-as-root --enable-gprof --enable-debug --disable-optimizations --prefix=/home/user/vlc/
编译:
make
make install