WinCE系统的编译过程图解

在WinCE系统中,当我们完成了相关的开发和系统定制工作以后,会编译WinCE系统,最后生成NK.bin和NK.nb0。我现在用WinCE6.0在自己的PC上面编译一次用时19分16秒(有一天无聊,就测了一下)。下面介绍一下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路径下的Private和Public目录进行编译,将里面的源代码编译成库文件等,这个过程可能会花费几个小时。除非改动了Private或Public目录下的源码,否则是不需要编译的。一般我们编译自己的工程的时候,不需要这个步骤。

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

在这个过程中,系统会根据你在PB中Catalog中的选项,删除和设置相应的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.ini为default.fdf。根据LOCAL环境变量的设置调用Res2exe.exe更新所有的dll,exe和cpl文件中的资源文件,主要是更新其中的语言部分。再调用Txt2ucde.exe转换所有ASCII码字符串为UNICODE。最后调用Romimage.exe合并所有文件为NK.bin。

在整个编译过程中有时会遇到编译错误,这个可以通过察看Build.log,Build.err和Build.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的时候,路径中不要有中文或者空格或者其他比较奇怪的字符。补丁要按照顺序来打,要不也可能会出现问题。

时间: 2024-07-28 19:54:56

WinCE系统的编译过程图解的相关文章

如何安装WIN7系统过程图解

  如何安装WIN7系统过程图解 下面请看WIN7安装的全过程: 首先在开启电脑时,要进入主板BIOS设置成光盘启动: 重新启动电脑,出现提示Enter Boot from CD rom,按Enter就进入安装界面: www.2cto.com 根据中文提示进行操作就是了: 要勾选"我接受许可条款"按下一步: 新安装的要选第二项: 格式化C盘,安装系统到C盘: 系统开始复制程序,这是安装过程: www.2cto.com 复制完毕后,系统会进行两次重新启动电脑,根据提示操作就可以了 : 如

C语言的编译过程

C语言的编译链接过程要把编写的c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接. 编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程. 链接是把目标文件.操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的过程. 过程图解如下: 从图上可以看到,整个代码的编译过程分为编译和链接两个过程,编译对应图中的大括号括起的部分,其余则为链接过程. 编译过程 编译过程又可以分成两个阶段:编译和会汇编. 编译        编译是读取源程序(字符流),对之进行

WinCE系统声音定制

WinCE系统声音定制       2010的第一篇Blog,介绍一下WinCE系统声音的定制.说白了,就是设置注册表.WinCE系统启动的开机音乐,点击触摸屏以及键盘输入的按键音,还有系统运行过程中的各种声音其实都是在注册表里面预先设置好的.这里做个简单介绍:   整个WinCE系统声音注册表设置如下: [HKEY_CURRENT_USER/ControlPanel/Volume] "Key"=dword:10002 "Screen"=dword:10002 &q

wincewinmain-关于WinMain函数在windows及wince系统中定义不同

问题描述 关于WinMain函数在windows及wince系统中定义不同 WinMain函数在windows及wince系统中定义不同,其中windows中LPTSTR lpCmdLine,而wince中LPWSTR lpCmdLine,但我创建了一个win32程序,需要应用到wince系统中,但使用LPWSTR总是报错说WinMain函数不能重定义,但如果我把这个改成LPTSTR,然后xamlruntime.h(wince系统自带的头文件)中很多需要重新修改,非常麻烦,这样做也是不合理的(我

linux安装教程(红帽RedHat Linux 9)光盘启动安装过程图解

RedHat Linux是目前世界上使用最多的Linux操作系统.因为它具备最好的图形界面,无论是安装.配置还是使用都十分方便,而且运行稳定,因此不论是新手还是老玩家都对它有很高的评价.现在,RedHat Linux又出了9.0新版本,在原有的基础上又有了很大的进步.它完善了图形界面,增强了硬件的兼容性,安装起来更加得心应手,尤其增强了多媒体方面的能力--新版本的XFree 4.0.1使你能够在Linux下播放多媒体文件.它还采用了OpenSSL 128位加密技术,使你的网络通信更加安全;最新的

在windows XP系统下编译和使用ffmpeg

最近在做流媒体开发这一块,在服务器端,所用的live555不支持mp4,avi等视频容器格式,所以打算运用ffmpeg来进行扩展.将MP4文件先运用ffmpeg进行解析,解析成live555所支持的基本视频流格式(如H.264等)和音频流格式,再运用live555中对基本音视频流的处理方式处理后,发送到客户端进行解码播放,这其中运用到了ffmpeg库,为了便于调试,开发环境初步选择了在windows下进行,所以需要在windows下编译ffmpeg.然后再扩充live555源代码.所用的版本为f

《深入理解Android:Telephony原理剖析与最佳实践》一2.2 Android源代码下载及编译过程

2.2 Android源代码下载及编译过程 前面完成了Ubuntu.JDK.Android SDK的安装和配置,接着开始下载和编译Android 4.0源代码,这个过程简单但花费的时间比较长,请读者先有个心理准备. Android 4.0的代号为Ice Cream Sandwich,简称ICS,中文名称冰淇淋三明治. 2.2.1 工作目录设置 本书采用ICS名称的文件夹作为Android 4.0源代码的根目录,在用户根目录下新建代码根目录ICS文件夹,并设置此目录为工作目录,在.bashrc中增

LFS编译过程必备辅助手册(一)

LFS编译过程必备辅助手册(一) 很多人对Linux进行了一定的学习之后,都会有一种自己从头搭建一套Linux的想法,在这方面LFS和Gentoo都是不错的起点.不过虽然它们已经尽量提供详细文档了,但对于初学者来说还是存在一定的困难的. 因此本站特邀 PHILO (@看见微软我就跑)和 米油 两位同学将他们自己学习LFS的经验分享给大家,也希望大家一起来参与到LFS之旅中. 前言 LFS(Linux from scratch)是从源代码开始编译Linux操作系统.如果需要深度定制Linux操作系

嵌入式 arm-如何通过串口实现让arm板上wince系统的桌面显示在pc的显示器上

问题描述 如何通过串口实现让arm板上wince系统的桌面显示在pc的显示器上 如何通过串口实现让arm板上wince系统的桌面显示在pc的显示器上,然后能通过pc机控制arm板? 求指点,刚接触这个,希望给点详细的解释和过程.谢谢了.我用的是MFC开发