WINCE PB編譯不過(guò)各種錯(cuò)誤集錦
本文將不擇手段搜集WINCE PB的各種編譯不過(guò)的錯(cuò)誤并給出解決方案或是相關(guān)思路,搜集資料來(lái)源:本人編譯出錯(cuò)后得到解決后的學(xué)習(xí)筆記,網(wǎng)上搜集的資料,朋友的教導(dǎo)等,后面將會(huì)詳細(xì)備注,大家一起交流.
一:不能sysgen,sysgen變灰色
檢查BSP包的命名,所建工程的命名是否正確!
二:*(LPDWORD) OEMMapMemAddr (dwImageStart, dwImageStart + ROM_SIGNATURE_OFFSET)函數(shù)不等于“CECE”
如下函數(shù)不執(zhí)行:[ROM_SIGNATURE=“CECE”]
if (*(LPDWORD) OEMMapMemAddr (dwImageStart, dwImageStart + ROM_SIGNATURE_OFFSET) == ROM_SIGNATURE)
{
//added by lqm,2009.07.11
//EdbgOutputDebugString(“*OEMMapMemAddr() = 0x%xrn”,*(LPDWORD) OEMMapMemAddr (dwImageStart, dwImageStart + ROM_SIGNATURE_OFFSET));
EdbgOutputDebugString(“*OEMMapMemAddr() = 0x%xrn”,*(LPDWORD) OEMMapMemAddr (0x80200000,0x80200040));
EdbgOutputDebugString(“dwImageStart:0x%xrn”,dwImageStart);
EdbgOutputDebugString(“ROM_SIGNATURE_OFFSET:0x%xrn”,ROM_SIGNATURE_OFFSET);
EdbgOutputDebugString(“ROM_SIGNATURE:0x%xrn”,ROM_SIGNATURE);
// 緊接著存放CECE的后面就是TOC,里面存有NK.exe的地址.其中sizeof(ULONG)用于順延存放CECE的四個(gè)字節(jié)區(qū)域
dwpToc = *(LPDWORD) OEMMapMemAddr (dwImageStart, dwImageStart + ROM_SIGNATURE_OFFSET + sizeof(ULONG));
// 為了修正指針,需要再次映射一次
// need to map the content again since the pointer is going to be in a fixup address
dwpToc = (DWORD) OEMMapMemAddr (dwImageStart, dwpToc + g_dwROMOffset);
EdbgOutputDebugString (“ROMHDR at Address 0x%Xrn”, dwImageStart + ROM_SIGNATURE_OFFSET + sizeof (DWORD)); // right after signature
}
一起以為是沒(méi)找著TOP里面的“CECE”,后來(lái)經(jīng)魏公公指點(diǎn),原來(lái)是之前生成的XIP.bin不是XIP模式的.
將processbib.exe,preromimage.bat兩個(gè)文件放到D:WINCE500PLATFORMSMDK2450Files目錄下,先copy files to release,
再make一下,生成的xip.bin就是xip模式的了.
三:PB編譯時(shí)提示spawn failed:invalid argument錯(cuò)誤
每次編譯出錯(cuò)信息還不一樣!
這次提示如下錯(cuò)誤:
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 ] Linking C:WINCE500publicrdpoaklibA
RMV4Iretailcetscbase.lib
BUILD: [00:0000000865:PROGC ] Compiling WINCE500PUBLICRDPOAKUITCETSCCLIP directory.
BUILD: [01:0000000872:PROGC ] Compiling .tscclip.cpp
BUILD: [01:0000000875:PROGC ] Linking C:WINCE500publicrdpoaklibarmV4Iretailcetscclip.lib
BUILD: [00:0000000878:PROGC ] Compiling WINCE500PUBLICRDPOAKUITCETSCUI 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 -c BUILDMSG=Stop. NOLINK=1 NOPASS0=1 failed - rc = 2
下面還有一個(gè)錯(cuò)誤:
BUILD: [00:0000000101:PROGC ] Scan WINCE500PUBLICWCESHELLFEOAKWATSONDWUI
BUILD: [00:0000000106:PROGC ] Scan WINCE500PUBLICWCESHELLFEOAKWATSONDWCTLPNL
BUILD: [00:0000000109:PROGC ] Saving C:WINCE500PUBLICWCESHELLFEBuild.dat.
BUILD: [00:0000000111:PROGC ] Total of 0 pass zero files to compile in 14 directories.
BUILD: [00:0000000112:PROGC ] Building generated files in WINCE500PUBLICWCESHELLFEOAKCTLPNLcplmain.
BUILD: [00:0000000119:PROGC ] Building generated files in WINCE500PUBLICWCESHELLFEOAKCTLPNLADVBACKLIGHT.
BUILD: [00:0000000126:PROGC ] Building generated files in WINCE500PUBLICWCESHELLFEOAKCTLPNLCONNPNL.
BUILD: [01:0000000129:ERRORE] NMAKE.EXE -i -c BUILDMSG=Stop. NOLINK=1 PASS0ONLY=1 CLEANBUILD=1 failed - 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[!--empirenews.page--]
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, 1 Errors
最后提示的錯(cuò)誤:
Build for Windows CE (Release) (Built on Apr 14 2005 13: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:WINCE500platformsmdk2450
Sysgening platform C:WINCE500platformsmdk2450
WINCE500build.err
C:WINCE500build.err
C:WINCE500build.log
C:WINCE500build.wrn
已復(fù)制 3 個(gè)文件.
BLDDEMO: There were errors building 2450_p900
2450_p900 - 3 error(s), 10 warning(s)
這個(gè)問(wèn)題比較麻煩,我通過(guò)重裝系統(tǒng)(換用另外一張堞裝,非ghost),成功過(guò)一次,換用臺(tái)式機(jī),也成功過(guò).但是筆記本上后來(lái)又不行了,原因不明.
四:PB編譯提示don't know how to make.........................
編譯2450 bootloader出錯(cuò),編譯driver沒(méi)錯(cuò),
編譯Eboot錯(cuò)誤如下:
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 WINCE500PLATFORMSMDK2450SrcBootloaderEboot.Whimory directory.
BUILD: [01:0000000067:ERRORE] NMAKE : U1073: don't know how to make 'E:WINCE500platformsmdk2450libarmV4Iretailoal_memory_s3c2450.lib'
BUILD: [01:0000000069:ERRORE] NMAKE.EXE -i -c BUILDMSG=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 ] Precomp Header 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 ] Static Libraries 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 ] Csharp Targets 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, 2 Errors
Build for Windows CE (Release) (Built on Apr 14 2005 13:54:39)
File names: Build.log Build.wrn Build.err Build.dat
2450_p900 - 2 error(s), 2 warning(s)
我按照提示的路徑找不著這個(gè)靜態(tài)庫(kù),oal_memory_s3c2450.lib
難道這個(gè)靜態(tài)庫(kù)PB裝時(shí)給漏掉了?
后來(lái)重裝WINCE,打04,05,06,07年的補(bǔ)丁,問(wèn)題依舊.看來(lái)還是沒(méi)經(jīng)驗(yàn)啊,感謝CSDN的高手Veabol,編譯SrcCommon后,果真生成了oal_memory_s3c2450.lib.
可是又出來(lái)一個(gè)CS8900*.lib的靜態(tài)庫(kù),后面的字符不記得了,看來(lái)還有其他地方要生成該庫(kù).編譯整個(gè)SMDK2450工程,看提示估計(jì)是該靜態(tài)庫(kù)是生成了,但是又
彈出另外一個(gè)對(duì)話框,提示某文件無(wú)法編譯,該文件為我已前做好的備份文件,有中文名.刪除該文件后,再編譯,仍然提示該錯(cuò),將BSP根目錄的build.dat刪除,
再編譯,問(wèn)題徹底解決.
看來(lái)很多靜態(tài)庫(kù)不是PB裝好后本身就有的,而需要編譯一些代碼才能生成.