Windows CE 5.0 编译错误及解决
1:
--------------------Configuration: Emulator: x86_Release--------------------
Starting Build: set WINCEREL=1&&build
==============
BUILD: [Thrd:Sequence:Type ] Message
BUILD: [00:0000000000:ERRORI] Failed to initialize from CECONFIG.H.
BUILD: [00:0000000001:PROGC ] Files Warnings Errors
BUILD: [00:0000000002:PROGC ] Midl 0 0 0
BUILD: [00:0000000003:PROGC ] Resource 0 0 0
BUILD: [00:0000000004:PROGC ] Message 0 0 0
BUILD: [00:0000000005:PROGC ] Precomp Header 0 0 0
BUILD: [00:0000000006:PROGC ] C/Cpp/Cxx 0 0 0
BUILD: [00:0000000007:PROGC ] Assembler 0 0 0
BUILD: [00:0000000008:PROGC ] Static Libraries 0 0 0
BUILD: [00:0000000009:PROGC ] Dll's 0 0 0
BUILD: [00:0000000010:PROGC ] Exe's 0 0 0
BUILD: [00:0000000011:PROGC ] Resx 0 0 0
BUILD: [00:0000000012:PROGC ] Csharp Targets 0 0 0
BUILD: [00:0000000013:PROGC ] Other 0 0 1
BUILD: [00:0000000014:PROGC ]
BUILD: [00:0000000015:PROGC ] Total 0 0 1
BUILD: [00:0000000016:PROGC ]
BUILD: [00:0000000017:PROGC ] 0 Warnings, 1 Errors
Build for Windows CE (Release) (Built on Apr 22 2004 10:38:01)
File names: Build.log Build.wrn Build.err Build.dat
CEFILTER: Failed opening D:\WINCE500\PBWorkspaces\PJE1\WINCE500\Emulator_x86\cesysgen\sdk\inc\ceconfig.h
PJE1 - 1 error(s), 0 warning(s)
---------------------------------------------------------------------------------------------------------------------------------------------
解决办法:没SYSGEN,就编译BSP,就会出现Failed to initialize from CECONFIG.H 错误。
2:
--------------------Configuration: Emulator: x86_Release--------------------
Starting Build: set WINCEREL=1&&build
==============
BUILD: [Thrd:Sequence:Type ] Message
BUILD: [00:0000000000:PROGC ] Checking for \WINCE500\sdk\bin\i386\srccheck.exe.
BUILD: [00:0000000001:PROGC ] SrcCheck exit code: 0 (dec).
BUILD: [00:0000000002:PROGC ] Compile and Link for x86.
BUILD: [00:0000000003:PROGC ] Loading D:\WINCE500\PLATFORM\EMULATOR\Build.dat.
BUILD: [00:0000000004:PROGC ] Done.
BUILD: [00:0000000005:PROGC ] Computing include file dependencies:
BUILD: [00:0000000006:PROGC ] Checking for SDK include directory: D:\WINCE500\sdk\ce\inc.
BUILD: [00:0000000007:PROGC ] Scan \WINCE500\PLATFORM\EMULATOR\SRC\KERNEL\OAL\
BUILD: [00:0000000008:WARNS ] Directory: D:\WINCE500\PRIVATE\OSINTERNAL\TEST\HAL\ does not exist.
BUILD: [00:0000000009:PROGC ] Scan \WINCE500\PLATFORM\EMULATOR\SRC\KERNEL\KERN\
BUILD: [00:0000000010:PROGC ] Scan \WINCE500\PLATFORM\EMULATOR\SRC\KERNEL\KERNKITL\
BUILD: [00:0000000011:PROGC ] Scan \WINCE500\PLATFORM\EMULATOR\SRC\KERNEL\KERNKITLPROF\
BUILD: [00:0000000012:PROGC ] Scan \WINCE500\PLATFORM\EMULATOR\SRC\DRIVERS\DMA\
BUILD: [00:0000000013:PROGC ] Scan \WINCE500\PLATFORM\EMULATOR\SRC\DRIVERS\EMULSERV\
BUILD: [00:0000000014:WARNS ] Directory: D:\WINCE500\platform\common\src\inc D:\WINCE500\public\common\oak\inc\ does not exist.
BUILD: [00:0000000015:PROGC ] Scan \WINCE500\PLATFORM\EMULATOR\SRC\DRIVERS\VCEFSD\
BUILD: [00:0000000016:PROGC ] Scan \WINCE500\PLATFORM\EMULATOR\SRC\DRIVERS\NET\D21X4\
BUILD: [00:0000000017:PROGC ] Scan \WINCE500\PLATFORM\EMULATOR\SRC\DRIVERS\WAVEDEV\
BUILD: [00:0000000018:PROGC ] Scan \WINCE500\PLATFORM\EMULATOR\SRC\DRIVERS\DISPLAY\VGAFLAT\
BUILD: [00:0000000019:PROGC ] Scan \WINCE500\PLATFORM\EMULATOR\SRC\DRIVERS\KBDMOUSE\EMULKBMS\
BUILD: [00:0000000020:PROGC ] Scan \WINCE500\PLATFORM\EMULATOR\SRC\DRIVERS\KBDMOUSE\PDDLIST\
BUILD: [00:0000000021:PROGC ] Scan \WINCE500\PLATFORM\EMULATOR\SRC\DRIVERS\KBDMOUSE\DLL\KBDEMULXTMSENGUS1\
BUILD: [00:0000000022:PROGC ] Scan \WINCE500\PLATFORM\EMULATOR\SRC\DRIVERS\KBDMOUSE\DLL\KBDEMULXTMSJPN1\
BUILD: [00:0000000023:PROGC ] Scan \WINCE500\PLATFORM\EMULATOR\SRC\DRIVERS\KBDMOUSE\DLL\KBDEMULXTMSJPN2\
BUILD: [00:0000000024:PROGC ] Scan \WINCE500\PLATFORM\EMULATOR\SRC\DRIVERS\KBDMOUSE\DLL\KBDEMULXTMSKOR1\
BUILD: [00:0000000038:PROGC ] Linking \WINCE500\PLATFORM\EMULATOR\SRC\KERNEL\KERN\ directory.
BUILD: [01:0000000045:ERRORE] NMAKE : U1073: don't know how to make 'D:\WINCE500\platform\common\lib\x86\retail\oal_startup_x86.lib'
BUILD: [01:0000000047:ERRORE] NMAKE.EXE -i -c BUILDMSG=Stop. LINKONLY=1 NOPASS0=1 failed - rc = 2
BUILD: [00:0000000048:PROGC ] Files Warnings Errors
BUILD: [00:0000000049:PROGC ] Midl 0 0 0
BUILD: [00:0000000050:PROGC ] Resource 0 0 0
BUILD: [00:0000000051:PROGC ] Message 0 0 0
BUILD: [00:0000000052:PROGC ] Precomp Header 0 0 0
BUILD: [00:0000000053:PROGC ] C/Cpp/Cxx 0 0 0
BUILD: [00:0000000054:PROGC ] Assembler 0 0 0
BUILD: [00:0000000055:PROGC ] Static Libraries 0 0 0
BUILD: [00:0000000056:PROGC ] Dll's 0 0 0
BUILD: [00:0000000057:PROGC ] Exe's 0 0 0
BUILD: [00:0000000058:PROGC ] Resx 0 0 0
BUILD: [00:0000000059:PROGC ] Csharp Targets 0 0 0
BUILD: [00:0000000060:PROGC ] Other 0 2 2
BUILD: [00:0000000061:PROGC ]
BUILD: [00:0000000062:PROGC ] Total 0 2 2
BUILD: [00:0000000063:PROGC ]
BUILD: [00:0000000064: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
PJE1 - 2 error(s), 2 warning(s)
NMAKE : U1073: don't know how to make 'D:\WINCE500\platform\common\lib\x86\retail\oal_startup_x86.lib'
编译在NMAKE阶段出现的错误。检查发现oal_startup_x86.lib文件不存在,但在D:\WINCE500\platform\common\lib\x86\debug\下存在该文件。
应该是COMMON在release下没有被编译(.lib为库文件)。
重新编译后出现该文件,然后再重新编译BSP无该错误。
3:
--------------------Configuration: Samsung SMDK2440A: ARMV4I_Debug--------------------
Starting Build: set WINCEREL=1&&build -c
==============
BUILD: [Thrd:Sequence:Type ] Message
BUILD: [00:0000000000:PROGC ] Checking for \WINCE500\sdk\bin\i386\srccheck.exe.
BUILD: [00:0000000001:PROGC ] SrcCheck exit code: 0 (dec).
BUILD: [00:0000000002:PROGC ] Compile and Link for ARM.
BUILD: [00:0000000003:PROGC ] Loading D:\WINCE500\PLATFORM\SMDK2440A\Build.dat.
BUILD: [00:0000000004:PROGC ] Done.
BUILD: [00:0000000005:PROGC ] Computing include file dependencies:
BUILD: [00:0000000006:PROGC ] Checking for SDK include directory: D:\WINCE500\sdk\ce\inc.
BUILD: [00:0000000007:PROGC ] Scan \WINCE500\PLATFORM\SMDK2440A\Src\Common\ABORT\
…
BUILD: [00:0000000279:PROGC ] Scan \WINCE500\PLATFORM\SMDK2440A\Src\Bootloader\Eboot\
BUILD: [00:0000000290:PROGC ] Scan \WINCE500\PLATFORM\SMDK2440A\Src\Bootloader\Stepldr\
BUILD: [00:0000000295:PROGC ] Compiling \WINCE500\PLATFORM\SMDK2440A\Src\Common\ABORT\ directory.
BUILD: [01:0000000302:PROGC ] Linking D:\WINCE500\platform\smdk2440a\lib\ARMV4I\debug\oal_abort_s3c2440a.lib
BUILD: [00:0000000306:PROGC ] Compiling \WINCE500\PLATFORM\SMDK2440A\Src\Common\Cache\ directory.
BUILD: [01:0000000313:PROGC ] Linking D:\WINCE500\platform\smdk2440a\lib\ARMV4I\debug\oal_cache_s3c2440a.lib
BUILD: [00:0000000317:PROGC ] Compiling \WINCE500\PLATFORM\SMDK2440A\Src\Common\Intr\ directory.
BUILD: [01:0000000324:PROGC ] Compiling .\intr.c
BUILD: [01:0000000327:PROGC ] Compiling .\fiq.c
…
BUILD: [01:0000000549:ERRORE] NMAKE : U1073: don't know how to make 'D:\WINCE500\PBWorkspaces\armsys2440\WINCE500\smdk2440a_ARMV4I\cesysgen\oak\inc\ceddk.def'
BUILD: [01:0000000551:ERRORE] NMAKE.EXE -i -c BUILDMSG=Stop. NOLINK=1 NOPASS0=1 failed - rc = 2
BUILD: [00:0000000552:PROGC ] Files Warnings Errors
BUILD: [00:0000000553:PROGC ] Midl 0 0 0
BUILD: [00:0000000554:PROGC ] Resource 0 0 0
BUILD: [00:0000000555:PROGC ] Message 0 0 0
BUILD: [00:0000000556:PROGC ] Precomp Header 0 0 0
BUILD: [00:0000000557:PROGC ] C/Cpp/Cxx 17 4 0
BUILD: [00:0000000558:PROGC ] Assembler 3 0 0
BUILD: [00:0000000559:PROGC ] Static Libraries 15 0 0
BUILD: [00:0000000560:PROGC ] Dll's 1 0 0
BUILD: [00:0000000561:PROGC ] Exe's 0 0 0
BUILD: [00:0000000562:PROGC ] Resx 0 0 0
BUILD: [00:0000000563:PROGC ] Csharp Targets 0 0 0
BUILD: [00:0000000564:PROGC ] Other 0 0 2
BUILD: [00:0000000565:PROGC ]
BUILD: [00:0000000566:PROGC ] Total 36 4 2
BUILD: [00:0000000567:PROGC ]
BUILD: [00:0000000568:PROGC ] 4 Warnings, 2 Errors
Build for Windows CE (Release) (Built on Apr 14 2005 13File names: Build.log Build.wrn Build.err Build.dat
armsys2440 - 2 error(s), 4 warning(s)
NMAKE : U1073: 'D:\WINCE500\PBWorkspaces\armsys2440\WINCE500\smdk2440a_ARMV4I\cesysgen\oak\inc\ceddk.def'
编译在NMAKE阶段出现的错误。检查发现ceddk.def文件不存在,但在D:\WINCE500\PUBLIC\COMMON\OAK\DRIVERS\CEDDK\DLL下存在ceddk.c文件,其sources文件包含DEFFILE=$(_COMMONOAKROOT)\inc\ceddk.def说明ceddk.def'在D:\WINCE500\PUBLIC\COMMON\OAK\INC下。说明在sysgen过程中没有将ceddk.def文件拷贝到工程文件夹下,选择clean before build和copy files to release directory然后重新sysgen。
注明:sources及makefile文件中包含的变量(_COMMONOAKROOT)一般在D:\WINCE500\PUBLIC\COMMON\OAK\MISC文件夹下定义的。
4:
--------------------Configuration: Samsung SMDK2440A: ARMV4I_Debug--------------------
Starting Build: set WINCEREL=1&&build -c
==============
BUILD: [Thrd:Sequence:Type ] Message
BUILD: [00:0000000000:PROGC ] Checking for \WINCE500\sdk\bin\i386\srccheck.exe.
BUILD: [00:0000000001:PROGC ] SrcCheck exit code: 0 (dec).
BUILD: [00:0000000002:PROGC ] Compile and Link for ARM.
BUILD: [00:0000000003:PROGC ] Loading D:\WINCE500\PLATFORM\SMDK2440A\Build.dat.
BUILD: [00:0000000004:PROGC ] Done.
BUILD: [00:0000000005:PROGC ] Computing include file dependencies:
…
BUILD: [00:0000001038:PROGC ] Compiling \WINCE500\PLATFORM\SMDK2440A\Src\Drivers\camera\ directory.
BUILD: [01:0000001046:PROGC ] Compiling .\camera.cpp
BUILD: [01:0000001049:ERRORE] d:\WINCE500\PLATFORM\SMDK2440A\Src\Drivers\camera\camera.cpp(777) : error C2065: 'ZONE_THREAD' : undeclared identifier
BUILD: [01:0000001050:ERRORE] d:\WINCE500\PLATFORM\SMDK2440A\Src\Drivers\camera\camera.cpp(780) : error C3861: 'ZONE_THREAD': identifier not found, even with argument-dependent lookup
BUILD: [01:0000001051:ERRORE] d:\WINCE500\PLATFORM\SMDK2440A\Src\Drivers\camera\camera.cpp(1031) : error C2065: 'ZONE_ERR' : undeclared identifier
BUILD: [01:0000001052:PROGC ] Linking D:\WINCE500\platform\smdk2440a\lib\ARMV4I\debug\camera.lib
BUILD: [01:0000001062:ERRORE] LINK : fatal error LNK1181: cannot open input file 'obj\ARMV4I\debug\camera.obj'
BUILD: [00:0000001068:PROGC ] Files Warnings Errors
BUILD: [00:0000001072:PROGC ] Precomp Header 0 0 0
BUILD: [00:0000001073:PROGC ] C/Cpp/Cxx 46 7 3
BUILD: [00:0000001074:PROGC ] Assembler 3 0 0
BUILD: [00:0000001075:PROGC ] Static Libraries 18 0 0
BUILD: [00:0000001076:PROGC ] Dll's 17 1 1
BUILD: [00:0000001077:PROGC ] Exe's 0 0 0
BUILD: [00:0000001078:PROGC ] Resx 0 0 0
BUILD: [00:0000001079:PROGC ] Csharp Targets 0 0 0
BUILD: [00:0000001080:PROGC ] Other 0 0 1
BUILD: [00:0000001081:PROGC ]
BUILD: [00:0000001082:PROGC ] Total 84 8 5
BUILD: [00:0000001083:PROGC ]
BUILD: [00:0000001084:PROGC ] 8 Warnings, 5 Errors
Build for Windows CE (Release) (Built on Apr 14 2005 13:54:39)
File names: Build.log Build.wrn Build.err Build.dat
armsys2440 - 4 error(s), 8 warning(s)
ZONE_THREAD,ZONE_ERR等宏没有定义,在Debug模式下会有影响,在Release模式下没有影响,应在其头文件中加入该宏定义。
在camera..h中加入以下代码:
#ifdef DEBUG
#define ZONE_ERR DEBUGZONE(15)
#undef ZONE_INIT
#define ZONE_INIT DEBUGZONE(14)
#undef ZONE_THREAD
#define ZONE_THREAD DEBUGZONE(13)
//
// these should be removed in the code if you can 'g' past these successfully
//
#define TEST_TRAP { \
NKDbgPrintfW( TEXT("%s: Code Coverage Trap in: I2C, Line: %d\n"), TEXT(__FILE__), __LINE__); \
DebugBreak(); \
}
#else
#define TEST_TRAP
#endif
补充:
在SMDK2440A中的Bootloader工程下的main.c文件中加入DWORD EdbgDebugZone;否则在Debug模式下编译出错。
4:
加载EBOOT时,下载完成后没有执行程序,可能是HCLK频率设置的太高。
一般当MCLK/FCLK = 400MHz时,FCLK:HCLK:PCLK = 1:3:6
我的补充:
BUILD: [01:0000000045:ERRORE] NMAKE : U1073: don't know how to make 'D:\WINCE500\platform\common\lib\x86\retail\oal_startup_x86.lib'
BUILD: [01:0000000047:ERRORE] NMAKE.EXE -i -c BUILDMSG=Stop. LINKONLY=1 NOPASS0=1 failed - rc = 2
该错误如果是自己添加的驱动在file/*.BAT下的文件中要添加: set BSP_XXXX=
另外source文件里的lib路径没设对,需要改。