使用Cygwin实现vlc 1.0.5的wince移植

本文完全参照了天将降的博客文章,写于此以作来日备忘之用,原文地址:http://bk6.blog.163.com/blog/static/24498560201051193449196/

第一步:下载安装Cygwin。笔者建议大家不要安装不完整的版本,以免出现不必要的错误。之前就是用了网上下的一个300多兆的简化版本,结果编译会出现缺少编译器等错误。Cygwin没有必要下载最新的,只要是完整版本就好。最后提醒大家在线安装Cygwin的过程相当漫长,而且会有下到一大半时报错无法下载的问题,强烈建议选择Use IE5 Settings的方式下载

安装Cygwin时如下选项是必选项:

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)
Web
     curl (optional: for building extras/contrib) (7.16.3-1)
     wget (optional: for building extras/contrib) (1.11.3-1)

这里还是建议硬盘空间大的话,完全安装!!

第二步:编译前的准备工作

源码下载:vlc-1.0.5.tar.bz2
http://download.videolan.org/pub/videolan/vlc/1.0.5/vlc-1.0.5.tar.bz2
交叉编译器:mingw32ce-0.59.1.tar.bz2
http://cdnetworks-kr-2.dl.sourceforge.net/project/cegcc/cegcc/0.59.1/cegcc_mingw32ce_cygwin1.7_r1375.tar.bz2
第三方库:contrib-20091114-wince-bin-gcc-4.1.0-runtime-3.15.2-only.tar.bz2
http://download.videolan.org/pub/testing/contrib/contrib-20091114-wince-bin-gcc-4.1.0-runtime-3.15.2-only.tar.bz2
注:比较麻烦的是第三方库,这个版本比较老,提供的第三方库也不完整,需要自己做一些修改。(可以根据执行configure脚本时的提示做对应到改动)

第三步:将mingw32ce-0.59.1.tar.bz2解压至/opt目录下;
将contrib-20091114-wince-bin-gcc-4.1.0-runtime-3.15.2-only.tar.bz2(这里我是用自己修改后的第三方库)解压至/usr目录下;
将源码vlc-1.0.5.tar.bz2解压至/home/"yourname"目录下;

完成该步骤后,你会看到:/opt/mingw32ce /usr/wince /home/"yourname"/vlc-1.0.5这三个目录

第四步:根据/vlc-1.0.5目录下configure文件编写脚本文件con-105.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-faad --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
注:此脚本文件一定要注意每行末尾不要有多余的空格,否则会出错。

第五步:执行脚本文件 ./con-105.sh

执行前,如果你是用文本编辑器编写的脚本,需要先运行命令:dos2unix con-105.sh
这里最好用root用户来执行,否则会出现权限错误提示(当然你也可以用chmod 777 con-105.sh来修改此文件的权限);


第六步:编译代码   执行命令:make
执行的过程中遇到如下错误,都找到了相应的解决方法.....

问题一:刚执行几行就出现错误

解决:可能是指定的路径没有生效,重新设置PATH,命令:PATH=/opt/mingw32ce/bin:$PATH

问题二:.libs/libaccess_realrtsp_plugin_la-access.o:access.c:(.text+0x6b8): undefined reference to `closesocket'
.libs/libaccess_realrtsp_plugin_la-access.o:access.c:(.text+0x6b8): relocation truncated to fit: ARM_26 against undefined symbol `closesocket'
collect2: ld returned 1 exit status
make[6]: *** [libaccess_realrtsp_plugin.la] 错误 1

解决:修改vlc_network.h中`closesocket'的定义;

问题三:如果中途遇到关键字atoll的错误,打开config.h搜索关键字atoll

注掉以下代码:#define HAVE_ATOLL 1

如果中途遇到关键字iconv的错误,打开config.h搜索关键字iconv

注掉以下代码:#define HAVE_ICONV 1

第七步:打包

执行:make package-wince
就能直接将生成的文件打包成vlc-1.0.5.zip
或者执行:make package-wince-base
得到一个vlc-1.0.5的目录

遇到问题:# make package-wince
OK.
cp "./bin/.libs/vlc.exe" "./vlc-1.0.5/"
cp: 无法 stat “./bin/.libs/vlc.exe”: 没有该文件或目录
make: *** [package-win-common] 错误 1

解决办法:在/home/micro/vlc-1.0.5目录下新建.libs文件夹,并将vlc.exe拷进该文件夹,然后重新执行make package-wince命令即可。

至此我们就得到了VLC 1.0.5对应的wince版本的DLLS。(注:由于后续版本中VLC已经不再为wince提供界面支持,所以我们编译的最后只能生成可供调用的DLLS,并无可以直接运行的界面)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/455537.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

andriod studio 运行 无结果_华为物联网操作系统LiteOS内核教程01——IoT-Studio介绍及安装...

1. 物联网一站式开发工具 —— IoT StudioIoT Studio 是支持 LiteOS 嵌入式系统软件开发的工具,提供了代码编辑、编译、烧录 及调试等一站式开发体验,支持 C、C、汇编等多种开发语言,让您快速,高效地进 行物联网开发。2. IoT Stud…

5G通信技术能否终结商用WiFi?

科技创新与体育发展可谓相生相伴,而如今科技在体育领域的应用也越来越广泛。本周的话题关于5G技术与球场,作者为英国体育娱乐营销咨询公司Stadia Solutions的联席首席执行官戈登坎贝尔。在坎贝尔先生看来,球场Wi-Fi赋予了俱乐部对数据的掌控力…

颜色转换

以蓝色为例,#0000FF应该被表示成rgb(0,0,255)。 我们将函数命名为getRGB() (可以将字符串视为数组,这个数组的元素为字符) function getRGB(color) {var rgb [parseInt(0xcolor.slice(1,3)),parseInt(0xcolor.slice(3,5)),parseI…

wince ./configure

CPPFLAGS"-I/usr/wince/include -D_WIN32_WCE0x0500" LDFLAGS"-L/usr/wince/lib" ./configure--hostarm-mingw32ce 指定软件运行的系统平台;host就是你编译好的程序可以运行的平台--target-osmingw32ce 指定软件面向(target to)的系统平台.这主…

android 按键会触发ontouch吗?_Android实现炫酷的拖拽浮动按钮

IOS的Assistive Touch效果很炫酷,可以任意拖拽,同时点击后会展开菜单栏。然而,这不只是IOS的特权,Android也可以实现。但是由于悬浮窗需要申请权限,所以本文仅在app内实现,可以任意拖拽,并可以响…

强名称程序集(strong name assembly)——为程序集赋予强名称

引言:在曾经的项目开发中,在程序集中见到过一个后缀为*.snk的文件。当时看这个文件的图标。感觉可能是企业内部保护版权啥的一种方式。一,强程序集攻克了哪些问题?1,唯一标识一个程序集2,放置程序集被仿冒和…

如何成为一名合格的数据分析师

“21世纪什么最贵,人才”,在目前大数据时代下,什么最难找,什么最贵,实现数据价值的人,数据分析师。 但是对于数据分析师的认识,比较极端,但对数据分析师价值的认识正在回归理性。很多…

【ffmpeg for wince】音视频编解码多平台移植(for window/wince))ffmpeg

from: http://www.cnblogs.com/windwithlife/archive/2009/05/31/1492728.html 终于完成了了第二个Client side原型(for Wince),其中花掉我最多时间的就是ffmpeg的对WINCE的移植。其中有大半时间是由于网上的一些不完整及不正确信息所误导,但…

Java 重写(Override)与重载(Overload)

重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写!返回值和形参都不能改变。即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为。也就是说子类能够根据需要实现父类的方法。在面…

银联pos小票word模板_商家pos机刷卡必须知道的知识

相信很多卡友伙伴或者商铺店家都装有pos机,然后一般pos机都没有使用说明书,更没有结合刷卡方法在内的秘籍。今天我就分享下刷卡必须知道的一些知识。刚刚办理pos机的当天一定要注意:使用之前呢,务必核对一下基本信息,例…

《Ext JS权威指南》——2.4节关于Ext.onReady

2.4 关于Ext.onReady 代码为什么写在Ext.onReady中,而不是在body中添加一个onload事件并在onload事件中运行呢?主要原因是Ext.onReady在DOM模型加载完毕后即可进行操作,而无需像onload事件那样,等待页面的所有资源都加载完毕后才…

git push 提交时显示 Empty reply from server的解决办法

输入 git fetch origin --prune 参考链接:https://stackoverflow.com/questions/28364023/gits-error-on-push-empty-reply-from-server 转载于:https://www.cnblogs.com/team42/p/6941678.html

转]移动视频监控(1)---项目综述

对于市场上的视频监控系统,大家都有一定的了解,就是视频采集,经过无线/有线发送到服务或代理,客户从服务或代理上得到视频/音频流。不复杂。 对于不远的将来,3G,4G的到来,对移动的业务有一个推动…

java 空接口_学Java,java接口搞明白了吗?大牛让你一文搞清楚

前言对于面向对象编程来说,抽象是一个极具魅力的特征。如果一个程序员的抽象思维很差,那他在编程中就会遇到很多困难,无法把业务变成具体的代码。在 Java 中,可以通过两种形式来达到抽象的目的,一种是抽象类&#xff0…

Check Point CEO:“我们正在积极寻找收购目标”

Check Point Sofrware Technologies很可能成为下一个会产生收购案的主流安全厂商,首席执行官Gil Shwed在该公司第二季度财报电话会议上这样表示。 “我们正在积极地寻求收购目标,期待无论是大规模的还是小规模的扩张,”Shwed表示。“我们在并…

Spark SQL 编程API入门系列之SparkSQL数据源

不多说,直接上干货! SparkSQL数据源:从各种数据源创建DataFrame 因为 spark sql,dataframe,datasets 都是共用 spark sql 这个库的,三者共享同样的代码优化,生成以及执行流程,所以 s…

H.264中的一些易混淆概念

Q:PSNR 峰值信噪比 Q:是根据它来取qp是不是? A:不是, 和QP没有直接关系, 但是QP的选择会影响到PSNR Q: 如果不用率失真最优化, 为什么选择SATD+deltar(mv,mode)作为模式选择的依据?为什么运…

Java中final关键字的几种用法

在java的关键字中,static和final是两个我们必须掌握的关键字。不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构。下面我们来了解一下final关键字及其用法。 final关键…

python pyqt5安装_Python3 安装PyQt5及exe打包图文教程

环境: Python 3.6.4 Pycharm Professional 2017.3.3 PyQt5 PyQt5-tools① Python 3 安装Python 3.x 安装时,默认勾选ADD Python 3.6 to PATH和ADD Python to environment variables的情况下,系统会向path中增加以下两个环境变量。D:\Program Files\Py…

《企业软件交付:敏捷与高效管理精要》——3.4 企业软件交付的软件工厂方法...

3.4 企业软件交付的软件工厂方法 正如我们前面讨论的,今天的机构面对的商业环境正以前所未有的速度发生变化。与此同时,这些机构还要管理和降低整个机构的运营成本。这就直接意味着,他们不仅要最大限度地减少浪费和低效率,还要提…