Fix: time stamp mismatch on celog.rel

本文介绍了一种在使用CE5 Remote Kernel Tracker或Remote Call Profiler时遇到的错误——模块celog.dll的.rel文件时间戳不匹配。文章详细解释了错误产生的原因,并提供了两种解决方案:一是关闭IMGCELOGENABLE选项;二是重建celog.dll以匹配.rel文件的时间戳。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Posting a full explanation of this error from CE 5.0.

Error: Mismatched time stamp on .rel file for module celog.dll requesting
kernel fixup.  Valid .rel file is required for kernel fixups.

It happens if you set the IMGCELOGENABLE build option ("enable event tracking during boot"), use some of our remote tools, and try to make an image again.

When you connect the CE5 Remote Kernel Tracker or Remote Call Profiler to a device, the tool copies celog.dll from under c:/program files/common files/microsoft shared/windows ce
tools/platman/target (I'm not sure if it's under wce500 or just directly under target, sorry) to your release directory, regardless of whether there's already a celog.dll there or not.  If you already had celog.dll and you were including it into your image with IMGCELOGENABLE, then the problem is then that celog.dll and celog.rel in your release directory don't match.  celog.rel will be from your old build of celog.dll while celog.dll will be from the platman target directory.  celog.rel is used to figure things out about the DLL when putting it into the "MODULES" section during makeimg.  So your options are:

1.If you don't need to collect CeLog event tracking data during boot, then turn off IMGCELOGENABLE.  You can still connect Kernel Tracker without having that variable set.  Unsetting that variable will remove celog.dll from your image and get rid of the makeimg error.
2.Setting IMGCELOGENABLE starts collection really early in boot, before most of the kernel and file system initialization.  If you don't really need it that early, but still want to collect data for what happens during boot after the kernel and file system are initialized, do this:
1.Turn off IMGCELOGENABLE and IMGAUTOFLUSH.
2.Look at common.bib and common.reg to see what those variables do.  Copy those settings (perhaps to platform.bib and platform.reg), except make sure that celog.dll is in the FILES section instead of the MODULES section.  Putting celog.dll into MODULES makes it load automatically really early, and makes it require the .rel file.  Moving it to FILES means that something else will have to load it -- probably CeLogFlush.exe, which is where the IMGAUTOFLUSH settings come in.  Changing it from MODULES to FILES gets rid of the requirement for the .rel file, and will get rid of the makeimg error.
3.If you really want to set IMGCELOGENABLE in order to get early boot data, then rebuild your own celog.dll so that it matches the .rel file.  You can do a full rebuild (sysgen) to get it, but the quick version is:
1.From the Build menu click "Open Release Directory"
2.Type "sysgen celog" to rebuild celog.dll from the command line.
3.Verify that the timestamp on celog.dll and celog.rel now match
4.Now you should be able to make an image
5.Note that every time you connect Kernel Tracker or Call Profiler it'll overwrite this file.  You can also copy your newly rebuilt file to the platman/target directory listed above, so that Kernel Tracker / Call Profiler use YOUR build of celog.dll which matches celog.rel.
This problem is fixed in CE 6.0; Kernel Tracker and Call Profiler will use the build of celog.dll from the platman/target directory without overwriting the file in your release directory.

NOTE: this post is specifically about the mismatched timestamp error on celog.dll, not on other modules.  If you are getting this error on some other module then you'll probably have to do your own debugging to figure out why the .rel file doesn't match.  You will probably have to rebuild the module or take it out of the MODULES section of your image in order to get around the error.

 

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/ymzhou117/archive/2010/04/03/5448484.aspx

### 原因分析: 你遇到的错误信息表明你在使用 GCC 的代码覆盖率工具(如 `gcov` 或者结合 CMake 使用的 Coverage 工具链)时遇到了文件读取问题。具体来说,这两个警告分别表示: 1. **"cannot open notes file"** (`gcno`) 文件无法打开: - `.gcno` 文件是编译阶段生成的覆盖数据笔记文件 (coverage note files),用于存储函数的基本块信息和其他元数据。如果这个文件不存在或路径不对,则会报此错。 2. **"stamp mismatch with notes file"** (`gcda` 和 `gcno` 时间戳不匹配): - `.gcda` 是运行期产生的二进制格式的实际执行记录,它应该与对应的 `.gcno` 匹配以便于后续处理。 - 如果源码重新编译过而未同步更新测试用例的数据收集部分,就会导致时间戳差异,进而引发该提示。 ### 解决方案: #### 方案一:清理旧的构建产物并重建项目 最简单直接的办法就是删除所有临时文件和中间产物后再做一次完整的编译流程。这可以避免由于残留的历史版本引起的冲突。 ```bash # 清除之前的 build 目录内容 rm -rf ./build/ # 创建新的 build 目录,并进入其中 mkdir build && cd build # 从头开始配置并构建整个工程 cmake .. make clean all ``` #### 方案二:仅移除特定的目标文件夹 如果你只想针对某个模块解决问题而不是全部清除的话,可以选择单独清理有问题的对象文件及关联的日志文件再尝试重现问题。 ```bash cd path/to/project/build/ find . -name "*.gc*" | xargs rm -f make UnitTest # 只需要对出现问题的部分进行重做就好 ``` #### 方案三:检查环境设置是否正确无误 有时也可能是因为交叉编译或其他复杂场景下的环境变量配置不当造成的。确认你的 PATH、LD_LIBRARY_PATH 等关键环境变量指向了正确的库位置。 --- 以上操作均能有效解决大多数类似情况带来的困扰;若仍存在其他特殊情况,请提供更多上下文信息便于进一步诊断!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值