当前位置:首页 > 编程开发

wince编译过程

webgou17年前 (2009-12-19)编程开发362

WinCE6.0编译小结:IE6+flashlite编译,需要把com组件编译进去,否则不会显示flash文件.flashlite被编译后,可以看出在RelDir\DeviceEmulator_ARMV4I_Debug文件下面有flashlite_wince.dll。flashlite_wince.dll为WinCE提供的插件,并未提供独立的exe文件。在PBuild中没有flashlite编译的源码.不知能否像PC上一样,有独立的flash lite 3.1播放器。不过从MS上知,只提供的是独立的Activex Control.下面为摘录别人的wince编译过程.

 

 

 

WinCE系统中,当我们完成了相关的开发和系统定制工作以后,会编译WinCE系统,最后生成NK.binNK.nb0下面介绍一下WinCE系统的编译过程,大致分为4个阶段:编译阶段(Compile phase),系统产生阶段(Sysgen phase),文件拷贝阶段(Release copy phase)和生成映像阶段(Make Run-time image phase)

 

 

 

整个编译都是通过调用Blddemo.bat来实现的,实际上也是这样,编译WinCE就是用Blddemo.bat,只不过后面可以跟不同的参数。编译阶段和系统产生阶段由Cebuild.bat完成,文件拷贝阶段由Buildrel.bat完成,最后的生成映像阶段由Makeimg.exe完成。下面介绍一下各个阶段。

 

1. 编译阶段(Compile phase)

这个过程指对WinCE路径下的PrivatePublic目录进行编译,将里面的源代码编译成库文件等,这个过程可能会花费几个小时。除非改动了PrivatePublic目录下的源码,否则是不需要编译的。一般我们编译自己的工程的时候,不需要这个步骤。

 

2. 系统产生阶段(Sysgen phase)

在这个过程中,系统会根据你在PBCatalog中的选项,删除和设置相应的SYSGEN环境变量,链接相应的静态库,过滤头文件,为SDK创建所需的导入库,同时还会为WinCE系统创建一些配置文件。最后会编译当前的BSP和应用程序。

 

3. 文件拷贝阶段(Release Copy phase)

拷贝所有所需的文件到工程的release目录下面,主要是前面系统产生阶段所产生的所有文件。

 

4. 生成映像阶段(Make run-time image phase)

该过程首先调用cenlscmp.exe根据国际语系与地区设定生成wince.nls文件。然后调用Fmerge.exe合并一些配置文件,合并所有bib文件为ce.bib,合并所有的reg文件为Reginit.ini,合并所有的dat文件为Initobj.dat,合并所有的db文件为Initdb.ini。之后调用Regcomp.exe压缩reginit.inidefault.fdf。根据LOCAL环境变量的设置调用Res2exe.exe更新所有的dllexecpl文件中的资源文件,主要是更新其中的语言部分。再调用Txt2ucde.exe转换所有ASCII码字符串为UNICODE。最后调用Romimage.exe合并所有文件为NK.bin

 

 

 

 

在整个编译过程中有时会遇到编译错误,这个可以通过察看Build.logBuild.errBuild.wrn文件来分析问题,这三个文件应该是位于”"WINCE600”目录下面。编译错误可能在不同的编译阶段产生,我们也可以根据这一点来分析问题。

 

一般在系统产生阶段(Sysgen phase)出现错误很可能是由于丢失组件或文件造成的,这时候Build.log会提供更多信息帮助分析问题。在这个阶段产生错误,很可能是由于在当前工程中添加或者删除WinCE组件造成的,其中有些组件的更改是需要进行”clean sysgen”的,而不能只使用”sysgen”命令。所以我的建议是每次添加或删除组件都做”clean sysgen”

 

如上面介绍系统产生阶段(Sysgen phase)也会编译BSP和部分应用。所以如果错误出现在系统产生阶段的编译过程中,一般一种可能就是你的代码有语法错误,当然这种错误很好查。还有一种可能出现的错误是连接错误,有可能是丢失了lib库文件或者链接错了库文件,也有可能是调用了错误的API函数,还有就是设置了错误的环境变量,这些查起来相对困难一点。

 

如果错误产生在文件拷贝阶段(Release copy phase),一种常见的问题就是和硬盘驱动器有关,检查一下release目录所在磁盘的磁盘空间。

 

如果问题出现在生成映像阶段(Make run-time image phase),根据编译的输出窗口的输出信息判断问题出在哪个子阶段。一种可能是你的bib文件或者reg文件中存在语法错误导致合并文件时出错,还有就是注意你的image的大小是否超过了config.bib文件中的设定,还有就是可能丢失了某个或者某些文件,这些丢失的文件很可能是由于在前面的编译过程中出现错误导致的。

 

 

当然,也有时候会遇到一些奇怪的问题,这些问题可能是由于没有正确的安装WinCE造成的,比如在安装WinCE的时候,路径中不要有中文或者空格或者其他比较奇怪的字符。补丁要按照顺序来打,要不也可能会出现问题。

扫描二维码推送至手机访问。

版权声明:本文由知了博客发布,如需转载请注明出处。

本文链接:https://www.webgou.info/?id=102

分享给朋友:

“wince编译过程” 的相关文章

Windows CE下操作GPIO的方法(以ARM9 S3C2410为例)

GPIO 是ARM芯片最基本的输入输出通道,在ADS下操作就是一个单片机工作,直接读写其寄存器。在ARM9平台上,Windows CE系统将GPIO的实地址(例如2410的GPIO的基地址为0x56000000)映射到虚拟地址空间(GPIO对应为0xB1600000),这 样,通过对这段虚拟地…

Java基础 三步学会Java Socket编程(一)

http://java.ccidnet.com/art/3539/20070606/1103859_1.html第一步 充分理解Socket1.什么是socket所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字&…

练习的mysql语句

 例子:将cdb_pms表subject字段中的Welcom to替换成 欢迎光临UPDATE `cdb_pms`SET `subject` = REPLACE(`subject`, 'Welcome to', '欢迎光临')WHERE INSTR(`subject`,'Welcome t…

WinCE串口驱动分析

WinCE串口驱动分析  …

Windows CE 内存管理

 一个 Windows CE 应用程序有许多不同的内存分配方式。 …

2410 Wince Eboot 流程

 2410 Wince Eboot 流程 对于嵌入式系统来说,一般都需要一个bootloader来下载和引导操作系统,常用的bootloader有eboot,uboot以及vivi等,对于windows ce来说最理想的bootloader当然是eboot(我也做了利用uboot下载和引导…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。