您的位置:首页 > 其它

WINCE PB编译不过各种错误集锦

2011-08-11 10:38 337 查看
本文将不择手段搜集WINCEPB的各种编译不过的错误并给出解决方案或是相关思路,搜集资料来源:本人编译出错后得到解决后的学习笔记,网上搜集的资料,朋友的教导等,后面将会详细备注,大家一起交流。文章一式两份,一份在博客上,另外一份放到论坛中,并实时更新。[电子技术论坛:http://bbs.armeasy.com]

一:不能sysgen,sysgen变灰色

检查BSP包的命名,所建工程的命名是否正确!

二:*(LPDWORD) OEMMapMemAddr (dwImageStart, dwImageStart +ROM_SIGNATURE_OFFSET)函数不等于“CECE”

如下函数不执行:[ROM_SIGNATURE=“CECE”]

if(*(LPDWORD) OEMMapMemAddr (dwImageStart, dwImageStart +ROM_SIGNATURE_OFFSET) == ROM_SIGNATURE)

{

//added bylqm,2009.07.11

//EdbgOutputDebugString("*OEMMapMemAddr() = 0x%x\r\n",*(LPDWORD)OEMMapMemAddr (dwImageStart, dwImageStart +ROM_SIGNATURE_OFFSET));

EdbgOutputDebugString("*OEMMapMemAddr() = 0x%x\r\n",*(LPDWORD)OEMMapMemAddr (0x80200000,0x80200040));

EdbgOutputDebugString("dwImageStart:0x%x\r\n",dwImageStart);

EdbgOutputDebugString("ROM_SIGNATURE_OFFSET:0x%x\r\n",ROM_SIGNATURE_OFFSET);

EdbgOutputDebugString("ROM_SIGNATURE:0x%x\r\n",ROM_SIGNATURE);

//紧接着存放CECE的后面就是TOC,里面存有NK.exe的地址。其中sizeof(ULONG)用于顺延存放CECE的四个字节区域

dwpToc = *(LPDWORD) OEMMapMemAddr (dwImageStart, dwImageStart +ROM_SIGNATURE_OFFSET + sizeof(ULONG));

//为了修正指针,需要再次映射一次

// need to map the content again since the pointer is going to bein a fixup address

dwpToc = (DWORD) OEMMapMemAddr (dwImageStart, dwpToc +g_dwROMOffset);

EdbgOutputDebugString ("ROMHDR at Address 0x%X\r\n", dwImageStart +ROM_SIGNATURE_OFFSET + sizeof (DWORD)); // right aftersignature

}

一起以为是没找着TOP里面的"CECE",后来经魏公公指点,原来是之前生成的XIP.bin不是XIP模式的。

将processbib.exe,preromimage.bat两个文件放到D:\WINCE500\PLATFORM\SMDK2450\Files目录下,先copyfiles to release,

再make一下,生成的xip.bin就是xip模式的了。

三:PB编译时提示spawn failed:invalid argument错误

每次编译出错信息还不一样!

这次提示如下错误:

BUILD: [01:0000000836:PROGC ] Compiling .\arcdlg.cpp

BUILD: [01:0000000839:PROGC ] Compiling .\connectingdlg.cpp

BUILD: [01:0000000842:PROGC ] Compiling .\dlgbase.cpp

BUILD: [01:0000000845:PROGC ] Compiling .\events.cpp

BUILD: [01:0000000848:PROGC ] Compiling .\mainwnd.cpp

BUILD: [01:0000000851:PROGC ] Compiling .\rdrwarndlg.cpp

BUILD: [01:0000000854:PROGC ] Compiling .\settings.cpp

BUILD: [01:0000000857:PROGC ] Compiling .\utils.cpp

BUILD: [01:0000000860:PROGC ] LinkingC:\WINCE500\public\rdp\oak\lib\ARMV4I\retail\cetscbase.lib

BUILD: [00:0000000865:PROGC ] Compiling\WINCE500\PUBLIC\RDP\OAK\UIT\CETSC\CLIP\ directory.

BUILD: [01:0000000872:PROGC ] Compiling .\tscclip.cpp

BUILD: [01:0000000875:PROGC ] LinkingC:\WINCE500\public\rdp\oak\lib\ARMV4I\retail\cetscclip.lib

BUILD: [00:0000000878:PROGC ] Compiling\WINCE500\PUBLIC\RDP\OAK\UIT\CETSC\UI\ directory.

BUILD: [01:0000000885:PROGC ] Compiling .\tscui.cpp

BUILD: [01:0000000888:PROGC ] Compiling .\maindlg.cpp

BUILD: [01:0000000891:PROGC ] Compiling .\propdisplay.cpp

BUILD: [01:0000000894:PROGC ] Compiling .\propgeneral.cpp

BUILD: [01:0000000897:PROGC ] Compiling .\proplocalres.cpp

BUILD: [01:0000000900:ERRORE] NMAKE : U1045:spawn failed : Invalid argument

BUILD: [01:0000000903:ERRORE] NMAKE.EXE -i -cBUILDMSG=Stop. NOLINK=1 NOPASS0=1 failed - rc =2

下面还有一个错误:

BUILD: [00:0000000101:PROGC ] Scan\WINCE500\PUBLIC\WCESHELLFE\OAK\WATSON\DWUI\

BUILD: [00:0000000106:PROGC ] Scan\WINCE500\PUBLIC\WCESHELLFE\OAK\WATSON\DWCTLPNL\

BUILD: [00:0000000109:PROGC ] SavingC:\WINCE500\PUBLIC\WCESHELLFE\Build.dat.

BUILD: [00:0000000111:PROGC ] Total of 0 pass zero files to compilein 14 directories.

BUILD: [00:0000000112:PROGC ] Building generated files in\WINCE500\PUBLIC\WCESHELLFE\OAK\CTLPNL\cplmain\.

BUILD: [00:0000000119:PROGC ] Building generated files in\WINCE500\PUBLIC\WCESHELLFE\OAK\CTLPNL\ADVBACKLIGHT\.

BUILD: [00:0000000126:PROGC ] Building generated files in\WINCE500\PUBLIC\WCESHELLFE\OAK\CTLPNL\CONNPNL\.

BUILD: [01:0000000129:ERRORE] NMAKE.EXE -i -cBUILDMSG=Stop. NOLINK=1 PASS0ONLY=1 CLEANBUILD=1failed - rc = 1

BUILD: [00:0000000130:PROGC ] Files Warnings Errors

BUILD: [00:0000000131:PROGC ] Midl 0 0 0

BUILD: [00:0000000132:PROGC ] Resource 0 0 0

BUILD: [00:0000000133:PROGC ] Message 0 0 0

BUILD: [00:0000000134:PROGC ] Precomp Header 0 0 0

BUILD: [00:0000000135:PROGC ] C/Cpp/Cxx 0 0 0

BUILD: [00:0000000136:PROGC ] Assembler 0 0 0

BUILD: [00:0000000137:PROGC ] Static Libraries 0 0 0

BUILD: [00:0000000138:PROGC ] Dll's 0 0 0

BUILD: [00:0000000139:PROGC ] Exe's 0 0 0

BUILD: [00:0000000140:PROGC ] Resx 0 0 0

BUILD: [00:0000000141:PROGC ] Csharp Targets 0 0 0

BUILD: [00:0000000142:PROGC ] Other 0 0 1

BUILD: [00:0000000143:PROGC ]

BUILD: [00:0000000144:PROGC ] Total 0 0 1

BUILD: [00:0000000145:PROGC ]

BUILD: [00:0000000146:PROGC ] 0 Warnings, 1Errors

最后提示的错误:

Build for Windows CE (Release) (Built on Apr 14 200513:54:39)

File names: Build.log Build.wrn Build.err Build.dat

CEBUILD: Running sysgen -p wceshellfe preproc

Starting sysgen phase for project ( wceshellfe )

Sysgening platform C:\WINCE500\platform\smdk2450

Sysgening platform C:\WINCE500\platform\smdk2450

\WINCE500\build.err

C:\WINCE500\build.err

C:\WINCE500\build.log

C:\WINCE500\build.wrn

已复制 3 个文件。

BLDDEMO: There were errors building 2450_p900

2450_p900 - 3 error(s), 10 warning(s)

这个问题比较麻烦,我通过重装系统(换用另外一张堞装,非ghost),成功过一次,换用台式机,也成功过。但是笔记本上后来又不行了,原因不明。

四:PB编译提示don't know how to make.........................

编译2450 bootloader出错,编译driver没错,

编译Eboot错误如下:

BUILD: [01:0000000039:PROGC ] Compiling .\debug.c

BUILD: [01:0000000042:PROGC ] Compiling .\ether.c

BUILD: [01:0000000045:PROGC ] Compiling .\flash.c

BUILD: [01:0000000048:PROGC ] Compiling .\nand.cpp

BUILD: [01:0000000051:PROGC ] Compiling .\usb.c

BUILD: [01:0000000054:PROGC ] Assembling .\usbs.s

BUILD: [00:0000000060:PROGC ] Linking\WINCE500\PLATFORM\SMDK2450\Src\Bootloader\Eboot.Whimory\directory.

BUILD: [01:0000000067:ERRORE] NMAKE : U1073:don't know how to make'E:\WINCE500\platform\smdk2450\lib\ARMV4I\retail\oal_memory_s3c2450.lib'

BUILD: [01:0000000069:ERRORE] NMAKE.EXE -i -cBUILDMSG=Stop. LINKONLY=1 NOPASS0=1 failed - rc =2

BUILD: [00:0000000070:PROGC] Files Warnings Errors

BUILD: [00:0000000071:PROGC ]Midl 0 0 0

BUILD: [00:0000000072:PROGC ]Resource 0 0 0

BUILD: [00:0000000073:PROGC ]Message 0 0 0

BUILD: [00:0000000074:PROGC ] PrecompHeader 0 0 0

BUILD: [00:0000000075:PROGC ]C/Cpp/Cxx 6 2 0

BUILD: [00:0000000076:PROGC ]Assembler 3 0 0

BUILD: [00:0000000077:PROGC ] StaticLibraries 0 0 0

BUILD: [00:0000000078:PROGC ]Dll's 0 0 0

BUILD: [00:0000000079:PROGC ]Exe's 0 0 0

BUILD: [00:0000000080:PROGC ]Resx 0 0 0

BUILD: [00:0000000081:PROGC ] CsharpTargets 0 0 0

BUILD: [00:0000000082:PROGC ]Other 0 0 2

BUILD: [00:0000000083:PROGC ]

BUILD: [00:0000000084:PROGC ]Total 9 2 2

BUILD: [00:0000000085:PROGC ]

BUILD: [00:0000000086:PROGC ] 2 Warnings, 2Errors

Build for Windows CE (Release) (Built on Apr 14 200513:54:39)

File names: Build.log Build.wrn Build.err Build.dat

2450_p900 - 2 error(s), 2 warning(s)

我按照提示的路径找不着这个静态库,oal_memory_s3c2450.lib

难道这个静态库PB装时给漏掉了?

后来重装WINCE,打04,05,06,07年的补丁,问题依旧。看来还是没经验啊,感谢CSDN的高手Veabol,编译Src\Common\后,果真生成了oal_memory_s3c2450.lib。

可是又出来一个CS8900*.lib的静态库,后面的字符不记得了,看来还有其他地方要生成该库。编译整个SMDK2450工程,看提示估计是该静态库是生成了,但是又

弹出另外一个对话框,提示某文件无法编译,该文件为我已前做好的备份文件,有中文名。删除该文件后,再编译,仍然提示该错,将BSP根目录的build.dat删除,

再编译,问题彻底解决。

看来很多静态库不是PB装好后本身就有的,而需要编译一些代码才能生成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐