TCPMP编译方法

 

    本文主要讲解TCPMP播放器到WINDOWS CE平台的移植编译过程,硬件平台以ARMV4为主,结束部分会讲解到ARMV4I编译中需要注意的问题

 

    这几天为公司一个项目做准备,准备编译移植来自linux系统的超级开源媒体播放器TCPMP(商业版名称:The Core Player)到Windwos CE平台,tcpmp是目前支持最多可以用在嵌入式设备中多媒体播放器.除了rm,rmvb等少数几种格式不支持外,其它常见视、音频格式几乎都支持。好东西是好定西,可是编译起来十分麻烦,网上关于这方面编译的文章很少,多半针对自己的环境粗略的讲一下,系统性不强。今天TCPMP媒体播放器正式编译成功,将经验总结一下:

 

开发环境:windows xp sp2 + EVC4.0(SP4)

目标平台:Windows CE5.0(ARMV4)

 

1.下载源码,可以去http://picard.exceed.hu/tcpmp/下载TCPMP源代码。我下载的源码版本是0.72RC1。

 

2.编译环境.我安装的是evc4.2(SP4)+standard sdk+Win32(WCE ARMV4) Release.如果是编译x86或者Emulator版本的.要下载一个nasm汇编工具.这点在readme.txt里面提到.nasm的下载地址http://nasm.sourceforge.net/.否则的话会因为缺少汇编器而报大量的错误。

 

3.下载下来的源码包中不包含ARM的解码器源码,可以从下面2个网址下载AMR的解码器的源代码:http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-610.zip

http://www.3gpp.org/ftp/Specs/archive/26_series/26.204/26204-600.zip

并且分别拷贝到AMR目录下的26104和26204中。同样,这个信息在readme.txt中提到。            

 

4.准备ARM的汇编器,根据实践经验,从ARM官网上面下载下来的汇编器编译时会报错,不适合使用,建议使用VS2005的ARM汇编器ARMASM.EXE,将其拷贝到C:/Microsoft eMbedded C++ 4.0/EVC/WCE400/BIN下面。

 

5.编译的时候切勿rebuild all,否则会报大量的错误,从Project—-Dependencies下来框里选择player_ce3(主项目),可以看到子项目间的相互依赖关系,所以player_ce3是最后一个编译的项目。随便在下拉框中选择一个子项目,在依赖项中都会发现common项目,说明该项目应该是首先需要进行编译的,下面我们首先从common项目入手。

 

6.将player_ce3项目set as active project,编译版本直接选择Win32 (WCE ARMV4) Release。这个项目将最后一个进行编译,最终生成一个player_ce3.exe的应用程序,那我们的目标也就达成了。但编译这个程序依赖许多的库。这些库就是其他的project编译后提供的。

 

7.在EVC左边的文件查看模式里首先选择common files,右键菜单Build(selection only)进行common项目的编译,会很顺利的过去。接下来由上而下顺序为子项目进行编译,当然,在Project—-Dependencies中没有关联的项目不需要进行编译(总共6项:player_ce2、sample_ce3、setup_ce2、setup_ce3、template、vorbislq),其它的把asap、flac、player_ce3三项放下来最后处理,这三项需要对编译器进行额外配置,否则会报大量错误。不出意外的话,都会顺利编译过去。接下来我们需要处理剩下来的3个项目。

 

8.编译asap项目。右键点asap files –>settings–>c/c++–>Category–>Preprocessor在Additional include directories:中增加项目路径(注意这个是相对路径,以下所有需添加内容都不包括引号)”.,asap,atari800/src”.不然一堆头文件会找不到.在Preprocessor definitions:中增加一个宏定义”,ASAP”当然这2步动作也可以在源代码中修改.如此设置完毕后,asap files project就可以正确编译了.

 

9.编译flac项目。同8,打开flac的settings到相同界面.在Additional include directories:中增加路径”flac/include,flac/src/libFLAC/include”,不然一堆头文件找不到。然后,在Preprocessor definitions添加”,FLAC__NO_DLL”。增加这个定义避免使用_declspec(dllexport)定义函数造成的一大堆c2491错误.如此设置后,flac project应该可以正确编译.

 

10.同理修改player_ce3项目,在Additional include directories中增加路径 ”../asap/asap,../asap,../asap/atari800/src,flac/include,flac/src/libFLAC/include”。然后在Preprocessor difinitions:增加”,ASAP”。这是最后一个项目文件,也是主项目文件,成功编译player_ce3.exe。

 

11. 拷贝包含player_ce3.exe在内所有的生成文件到目标板上(所有文件必须放在同一个目录中),可以运行!但是菜单没有显示正确。主要原因是现实语言配置文件没有加载上去,可以将源码lang目录下面的多国语言支持文件拷贝到目标板同一个目录下面。如果只需要简体中文和英文的,只要拷贝lang_std.txt lang_en.txt,lang_chs.txt,lang_ca.def四个文件(四个语言配置文件一定要和应用程序放在同一个目录)就可以了,打开后默认显示是英语,你可以更改到简体中文,前提是你的CE平台支持简体中文。

 

我是在VS2005中用开发平台的模拟器跑的,一切正常,就是播放不流畅,后期需要对这块进行优化。

 

我也尝试将其编译到ARMV4I平台上,结果也是可行的,不过由于的平台的特殊性,有部分配置需要改动,也有部分插件不被支持,不过不影响使用,大体总结如下:

 

1.经验总结表明在ARMV4I平台的编译工作中,TCPMP有部分模块不被支持,编译提示缺少相应文件。由于该部分不被支持的模块不影响播放器的正常使用,可以在Project–Dependenties中下拉框中选择player_ce3,然后将以下几项前面的勾拿掉:ffmpeg、mpc、speex 这三项可以不必编译。

 

2.Win32 (WCE ARMV4I) Debug及Release版本需要自己手动创建。在Build–Configurations里为每个子项目选择ADD(上面提到的3项,和依赖项中不需要编译的6项不必添加),CPU选择Win32 (WCE ARMV4I),在Copy settings from里选择Win32 (WCE ARMV4) Release,然后选择OK,你就为该子项目添加了相应编译版本。

 

3.右击需要编译的子项目,选择Settings–Link,在Category中选择General,然后再下面Project Options里将最后一行语句:/MACHINE:ARM 改成 /MACHINE:THUMB (每个项目都必须要改)

 

4.其它步骤按照按照上文ARMV4的过程来就可以了,相应的修改也是需要的,先从common开始,以player_ce3结束。

 

经过以上过程,你就可以定制自己专用的TCPMP播放器了,可以在interface项目中更改TCPMP的外观,当然,重头工作还在于对于特定平台的一些优化工作:)

 

注:如果上面给出网址的解码器包下载不了,可以在本站软件专区的windows ce工具中下载ARM汇编器(VS2005提取出)和解码器包

 

 

时间: 2024-09-19 08:20:02

TCPMP编译方法的相关文章

简单的Android之apk包反编译方法

网上相关的文章一大堆了,我只是总结下自己的反编译方法和工具 工具下载地址: http://download.csdn.net/detail/zsjangel/7104663 下载上面的三个工具的压缩包 Apktool_v1.5.1_CHS_By_b-sf.rar  dex2jar.zip jd-gui-0.3.5.windows.zip 一.反编译 xml 等模版资源文件. 解压 apktool 包,然后将你要反编译的 apk 文件拖放到 ApkModify.bat  文件上就自动反编译了,这个

SQLite3源码在Windows及WinCE平台下的编译方法

好久没有写博客了,最近有时间又开始写点东西. 最近,刚好需要用到SQLite3数据库,就自己研究了一下,这个的确是个好东西,开源的东西都还不错. 好了,言归正传.相信不少人在用SQLite3源码编译的时候还是费了不少劲的,网上找来的东西都讲的不是很完整. 下面,我就将自己的编译方法写了出来. 首先从SQLite官方网站http://www.sqlite.org/download.html 下载最新的源代码,目前最新的版本是V3.7.11(2012年3月25日星期日). 需要下载在源码如下: sq

boost全平台编译方法

1.通用规则 多数库是不需要预先编译的,include hpp文件就能用.如果出现链接失败,那就是可能需要编译库了. boost自带一套编译工具bjam,bjam本身是跨平台的,并且也要自行编译出来.在boost目录下有bootstrap.sh和bootstrap.bat两个脚本分别用来编译*nix和windows下的bjam.bootstrap脚本可以传入参数,以在编译bjam过程中生成特定的编译boost的配置.这些配置保存在新生成的project-config.jam里,但还可以在运行bj

给hackrf加上1602LCD以及UART(附带固件编译方法)

代码库(在hackrf原代码库基础上只添了两个文件,改了一个文件): https://github.com/JiaoXianjun/hackrf-UART-1602LCD 目的主要是为了帮助想更改调试hackrf固件的人.因为没有调试手段的话改固件基本两眼一摸黑,黑暗中摸索很难.前段日子弄收飞机的固件时已经在黑暗中把调试手段弄通了,共享给需要的人. 就是给hackrf板子加上了1602液晶屏以及uart,然后就能愉快的在自己的固件代码中输出到液晶屏或者printf到电脑的串口终端了. 1 硬件连

破解.net程序(dll文件)编译和反编译方法_php技巧

我只做个简单的小例子,给大家一个思路,吼吼~~~~ 1使用工具 Reflector.exe 用来查看.net代码 这个就不用多说了它是学.net必备神器 Ildasm.exe:用来将dll,exe编译为IL文件 ilasm.exe:用来将IL文件编译回来dll或exe EmEditor文本处理工具这个大家如果没有我这有下载里面有注册码EmEditor.rar 2Ildasm和ilasm基本知识: ilasm.exe与ildasm.exe的使用 首先打开cmd命令.cd 到 C:\Program

破解.net程序 编译和反编译方法

 有好多.net程序有加密狗或者有验证,如果exe或dll没有做过特殊处理,破解.net程序其实很简单,不过你要有足够的耐心! 我只做个简单的小例子,给大家一个思路,吼吼~~~~ 1使用工具 Reflector.exe 用来查看.net代码 这个就不用多说了它是学.net必备神器 Ildasm.exe:用来将dll,exe编译为IL文件 ilasm.exe:用来将IL文件编译回来dll或exe EmEditor文本处理工具这个大家如果没有我这有下载里面有注册码EmEditor.rar 2Ilda

windows 下FFMPEG的编译方法 附2012-9-19发布的FFMPEG编译好的SDK下载

经过一晚上加一上午的奋斗,终于成功编译出了最新版的FFMPEG,下面是我编译的心得,因为是最新的,应该会对大家有用,编译的FFMPEG的版本是0.11.2,2012-09-19新发布的版本   平台:WINDOWS XP,MinGW+MSYS 一.下载FFMPEG 大家可以到FFMPEG官网上去下载最新版:http://ffmpeg.org/download.html现在的最新版就是我编译的版本: 其实我更喜欢下面这个地址,直接列出来所有的供下载的版本:http://ffmpeg.org/rel

WinCE中公开源代码的编译方法

    从WinCE5.0开始,微软就公开了WinCE的相关源代码.一方面,这使我们可以更深入的学习WinCE操作系统,另外一方面,也让定制个性化WinCE操作系统成为可能.这里要介绍的就是如何编译WinCE公开的源代码,以开机输入密码的界面为例.      WinCE开机输入密码的界面,一定搞晕了不少朋友.先前曾写过一篇文章,尝试着解决这个问题.但毕竟那是没有办法的办法,并且有时候还用不了.而这个问题,对于定制WinCE操作系统的工程师来说,其实很简单,只要添加一个函数调用即可.一个API就能

Linux系统内核编译方法指导

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   随着 Linux 操作系统的广泛应用,特别是 Linux 在嵌入式领域的发展,越来越多的人开始投身到 Linux 内核级的开发中.面对日益庞大的 Linux 内核源代码,开发者在完成自己的内核代码后,都将面临着同样的问题,即如何将源代码融入到 Linux 内核中,增加相应的 Linux 配置选项,并最终被编译进 Linux 内核.这就需要了解 Linux 的内核