用Cygwin编译出wince下使用的vlc-1.0.5

目标:使用Cygwin编译出适用于wince环境下的VLC的dll文件。因为wince下的vlc界面已经不再支持。

参考网址:官方网站 http://wiki.videolan.org/winceCompile 

     其他 http://hi.baidu.com/mailrabbit/blog/item/6663c90873e2788fd1581be3.html

                     http://bk6.blog.163.com/blog/static/24498560201051193449196/

     海狗哥的博客http://jeremiah.blog.51cto.com/all/539865 主要是编译windows平台下的VLC,很全面我从他那里请教了不少东西,在这里表示感谢。

进入正题:

第一步:cygwin的安装。与前几位的说明相同,将必选项罗列如下,这里需要说明的是,我下载的是cygwin的最新版本,选项是这些选项,但是版本号,即括号内的内容已经不是了。这里我遇到了问题是在编译过程中执行*.sh文件时,会出现c compiler cannot create execults.解决方法是:这里的选项中,要加入libmpfr1(用红笔标出),这是我在官网论坛中得到的答案。

Archive
     unzip (5.52-2)
     zip (2.32-2)
Devel
     autoconf (4-1 2.13-3 2.61-1)
     automake (2-1 1.10-1 1.4p6-4 1.5-2 1.63-3 1.7.9-3 1.8.5-3 1.9.6-2)
     binutils (20080624)
     cvs (1.11.22-1)
     gcc (3.4.4-3)
     gcc-core (3.4.4-3)
     gcc-g++ (3.4.4-3)
     gcc-mingw (20040810-1)
     gcc-mingw-core (20050522-1)
     gcc-mingw-g++ (20050522-1)
     gdb (6.8-2)
     gettext (0.15-1)
     gettext-devel (0.15-1)
     git (1.6.0.2-1)
     libiconv (1.11-1)
     libgcrypt-devel (1.41-4)
     libtool (1.5.27a-1)
     make (3.81-2)
     mingw-runtime (3.15.1-1)
     nasm (2.02-1)
     patchutils (0.2.31-2)
     pkg-config (0.23a-2)
     subversion (1.5.2-1)
Editor
     vim (7.2-3)
Libs
     expat (2.0.1-1)
     libgcrypt (1.4.1-4)

     libmpfr1    
Web
     curl (optional: for building extras/contrib) (7.16.3-1)
     wget (optional: for building extras/contrib) (1.11.3-1)

第二步:准备工作

  vlc源码:vlc-1.0.5.tar.bz2

  交叉编译器:mingw32ce-0.59.1.tar.bz2

  第三方库文件:contrib-20091114-wince-bin-gcc-4.1.0-runtime-3.15.2-only.tar.bz2

  以上三个文件的下载地址要参考上面的参考文章链接。

这里要注意:交叉编译器和第三方库的压缩文件的解压要在cygwin环境下用代码完成。如下:

  首先要 $ cd /

  然后 $ tar xjf mingw32ce-0.59.1.tar.bz2 -C /

         $ tar xjvf contrib-20091114-wince-bin-gcc-4.1.0-runtime-3.15.2-only.tar.bz2 -C /

  注意结尾 -C /

  vlc源码则在windows下手动解压到 ../home/YourName/下。

  cygwin的操作和熟悉的过程可以参照海狗哥的博客第一篇和第二篇。还有他qq邮箱中的视频。

第三步:编写和执行脚本文件(这里取名conf-vlc.sh)

PATH=/opt/mingw32ce/bin:$PATH \
CPPFLAGS="-I/usr/wince/include -D_WIN32_WCE=0x0500" \
LDFLAGS="-L/usr/wince/lib" \
PKG_CONFIG_LIBDIR=/usr/wince/lib/pkgconfig \
./configure --host=arm-mingw32ce \
--enable-dshow --enable-bda --disable-hal --disable-activex --disable-vlc \
--disable-directx --disable-dvdnav --disable-libgcrypt --enable-wingdi \
--disable-remoteosd --disable-sdl --disable-skins2 \
--disable-faad --enable-mad --enable-wingdi --enable-waveout \
--enable-mkv --enable-httpd --enable-libmpeg2 --enable-ogg \
--enable-live555 --enable-realrtsp --enable-bda \
--enable-ffmpeg --with-ffmpeg-mp3lame --with-ffmpeg-faac \
--with-ffmpeg-zlib --enable-flac --enable-theora \
--enable-csri --enable-libass --enable-asademux --enable-freetype=/usr/wince/freetype-2.3.12 \
--enable-release --enable-disable --enable-optimizations --enable-sse --enable-mmx --enable-optimize-memory

 在执行脚本之前,执行 $./bootstrap.

 之后执行以上脚本文件,$ ./conf-vlc.sh的时候会遇到些问题,根据问题将不同的模块disable掉就可以了,比如我这里就遇到mad的问题,则--disable-mad,还有faad的问题。至于每个模块都什么意思,建议官网查询,或者执行 $ ./configure -h>help.txt 命令,在help.txt中理解。

第四步:make和make package-wince-base(打包)

再通过脚本文件之后,执行$ make。进行编译。编译过程中,会遇到些问题,在我前面提到的参考文献中都有提及。如果遇到其他问题,则google之。

而在之后的 $ make package-wince-base时,遇到了stat “./bin/.libs/vlc.exe”的问题。参考文献中的方法说的笼统,我在这里细化一下。随便找一个windows下安装vlc路径中的vlc.exe文件,然后在/home/yourname/vlc-1.0.5/bin/下建立libs文件夹(因为在windows下无法建立.libs文件夹),之后在cygwin中执行

$ cd home/yourname/vlc-1.0.5/bin

$ mv libs .libs(这里mv的作用是替换目标名称)

之后重新执行 make package-wince-base.便生成了vlc-1.0.5文件夹,其中的libvlc.dll,libvlccore.dll和plugins文件夹下的dll文件便是我们需要的。

 

总结:这里cygwin的安装时很重要的,我重复安装了许多遍才成功编译。最后我对照从海狗哥qq邮箱中下载的cygwin(2008版)和最新版,再加上libmpfr1。才打到预定的效果。对照的方法是,对比文件夹中的各个名称,在安装时搜索着添加。

希望我的内容会对你有用。

posted on 2011-03-10 16:41  Big_Z  阅读(697)  评论(5编辑  收藏  举报

导航