windows下编译vlc-1.1.5详解
VLC的全名是Video Lan Client,是一个开源的、跨平台的视频播放器。VLC支持大量的音视频传输、封装和编码格式。
创建VLC的编译环境。VLC在Windows下有两种编译方式:
方式一:Msys+MinGW
方式二:Cygwin
二者大同小异,下面主要介绍Cygwin的方式编译VLC。Cygwin是一个在Windows下面模拟Linux环境的东西。它提供了很多库和应用程序,让你可以像在Linux上一样来使用Windows。到官网下载Cygwin的安装程序setup.exe。
下载完成后,点击Cygwin的安装程序setup.exe进行安装。
点击【下一步】按钮,进去如下界面,有三种安装方式:
3.1从网络安装
3.2下载但不安装
3.3从本地安装
Cygwin安装的时候,需要安装一些默认的库,同时我们编译VLC还需要加入一些库来支持VLC的编译。如果你没有下载相应的库到本地则选择第一种方式“Install from Internet”来安装。如果已经把库下载到本地,则选择第三种方式"Install from Local Directory"来安装。小编采用的是第三种方式安装Cygwin。
点击【下一步】,根据窗口提示选择安装目录。继续【下一步】选择本地库安装包的目录。
点击【下一步】,根据窗口提示选择需要安装的包。
选择所有需要的安装包后,点击【下一步】进行安装,并等待安装完成。
安装结束后,选择创建桌面图标,并点击【完成】按钮。
下载VLC源码包(vlc-1.1.5.tar.bz2)、编译库(contrib-20100616-win32-bin-gcc-4.4.4-runtime-3.17-only.tar.bz2),和LUA语言包(lua-5.1.4.tar.gz)。
下载完成编译源码、库和语言包后,点击桌面上Cygwin程序快捷键,打开Cygwin应用程序。
打开程序之后,将vlc-1.1.5.tar.bz2和lua-5.1.4.tar.gz拷贝到Cygwin安装目录下的/home/yourname下面(注:yourname为你自己的用户名,如从上面打开的Cygwin程序应用窗口可知小编的yourname为lenovo)。小编Cygwin的安装目录为D:\cygwin,则拷贝后如下图。
拷贝完成后,返回Cygwin程序窗口,使用Linux命令解压lua-5.1.4.tar.gz软件包,解压命令如下:
$tar zxvflua-5.1.4.tar.gz
解压lua-5.1.4.tar.gz完成后,进入lua-5.1.4目录,在记事本中修改src/Makefile,将CC = gcc改成CC = gcc -mno-cygwin并保存。
修改完成后,返回Cygwin程序窗口,进入到lua-5.1.4目录,执行如下命令:
$make ansi
$make install
编译并安装LUA。
在~(/home/yourname)目录下解压vlc-1.1.5.tar.bz2,解压命令如下:
$tar jxvfvlc-1.1.5.tar.bz2
将contrib-20100616-win32-bin-gcc-4.4.4-runtime-3.17-only.tar.bz2库文件包拷贝到Cygwin程序的安装目录下(即与上面提到的home目录为同级目录),返回Cygwin应用程序窗口,在~(/)目录下对库进行解压,解压命令如下:
$tar jxvfcontrib-20100616-win32-bin-gcc-4.4.4-runtime-3.17-only.tar.bz2
删除/usr/win32/bin下面的moc,rcc,uic这三个文件,注意,保留moc.exe,rcc.exe,uic.exe。
进入vlc-1.1.5,并执行如下命令:
$./bootstrap
编译成功后会显示如下内容:
Successfully bootstrapped
注释:若出现此错误
在Cygwin中开发Rails,有时候需要执行SH命令,而这些命令调用DLL时经常会遇到类似的错误提示:
[main] ruby 4208 C:/cygwin/bin/ruby.exe: *** fatal error - unable to remap C:/cygwin/bin/cygssl-0.9.8.dll to
same address as parent(0×340000) != 0×4730000
[main] ruby 1752 fork: child 4208 - died waiting for dll loading, errno 11
具体原因不大清楚,解决方法如下:
CMD到Cygwin的bin路径下,执行ash命令,或者直接run这个命令;
在ash提示符后面运行/bin/rebaseall,注意要输入完整,如果只输入rebaseall,会提示找不到这个命令,而且这个命令只能在ash下面执行,不能在Cygwin下面执行。
现在打开Cygwin,应该一切正常了。
在vlc-1.1.5目录下,新建脚本文件myBuild.sh,添加如下内容:
PATH=/usr/win32/bin:$PATH \
PKG_CONFIG_LIBDIR=/usr/win32/lib/pkgconfig \
CPPFLAGS="-I/usr/win32/include -I/usr/win32/include/ebml" \
LDFLAGS=-L/usr/win32/lib \
CC="gcc -mno-cygwin" CXX="g++ -mno-cygwin" \
./configure \
--host=i686-pc-mingw32 \
--enable-nls --enable-sdl \
--enable-avcodec --enable-avformat --enable-swscale \
--enable-faad --enable-flac --enable-theora \
--enable-freetype \
--enable-fribidi \
--disable-fluidsynth \
--enable-live555 --with-live555-tree=/usr/win32/live.com \
--enable-caca \
--with-dvdnav-config-path=/usr/win32/bin \
--disable-vcdx --enable-goom \
--enable-twolame --enable-dvdread \
--enable-debug --enable-dca \
--disable-mkv --disable-taglib --disable-projectm \
--disable-zvbi --disable-schroedinger --disable-dirac \
--enable-mozilla --with-mozilla-sdk-path=/usr/win32/gecko-sdk
返回Cygwin应用程序窗口,在vlc-1.1.5目录下执行./myBuild命令。
成功后会显示
libvlc configuration
--------------------
version : 1.1.5
system : mingw32
architecture : i686 mmx sse sse2
build flavour : debug devel
vlc aliases : cvlc rvlc svlc qvlc
plugins/bindings : activex mozilla
You can tune the compiler flagsinvlc-config.
To build vlc and its plugins, type `./compile' or `make'.
修改vlc-1.1.5目录下的libtool文件,需改内容如下:
修改global_symbol_pipe=""为:
global_symbol_pipe="sed -n -e 's/^.*[]//([ABCDGIRSTW][ABCDGIRSTW]*//)[][]*//(//)//([_A-Za-z][_A-Za-z0-9]*//)/$///1//2//3 //3/p'"
修改完成后,返回Cygwin应用程序窗口,在vlc-1.1.5目录下执行如下操作:
$make
执行make应该不会报错,成功后,继续执行:
$make package-win32-base
至此,windows下编译vlc-1.1.5就此搞定!
版权声明:本站【趣百科】文章素材来源于网络或者用户投稿,未经许可不得用于商用,如转载保留本文链接:https://www.qubaik.com/answer/72781.html