iccavr编译时出现的错误解决办法

发布时间 : 星期二 文章iccavr编译时出现的错误解决办法更新完毕开始阅读

初学者初用ICCAVR编程的时候,经常会出现一些错误,现在将常见的错误报告整理如下。这里的一些错误是为了展示说明而故意制造的,欢迎你提供你遇到的错误和解决方法。

一、正常编译通过

CODE:

C:\\icc\\bin\\imakew -f main.mak iccavr -c -IC:\\icc\\include\\ -e -DATMEGA -DATMega16 -l -g -Mavr_enhanced D:\\桌面\\实验教程\\LED应用\\霓虹灯\\main.c

iccavr -o main -LC:\\icc\\lib\\ -g -ucrtatmega.o -bfunc_lit:0x54.0x4000 -dram_end:0x45f -bdata:0x60.0x45f -dhwstk_size:16 -beeprom:1.512 -fihx_coff -S2 @main.lk -lcatmega Device 1% full. Done.

[url=\

这是我们最想看到的了,万事大吉。

二、工程中未加入.C文件

CODE:

C:\\icc\\bin\\imakew -f main.mak

iccavr -o main -LC:\\icc\\lib\\ -g -ucrtatmega.o -bfunc_lit:0x54.0x4000 -dram_end:0x45f -bdata:0x60.0x45f -dhwstk_size:16 -beeprom:1.512 -fihx_coff -S2 @main.lk -lcatmega unknown file type @main.lk, passed to linker !ERROR unknown file type '@main.lk'

C:\\icc\\bin\\imakew.exe: Error code 1 Done: there are error(s). Exit code: 1

解决办法:将你的程序加入工程中,可以右键程序区>>ADD to project

三、程序没有后缀名,或者后缀名不正确。

CODE:

C:\\icc\\bin\\imakew -f main.mak

C:\\icc\\bin\\imakew.exe: 'main' is up to date Done.

这是一个很难理解的错误,它是由工程中的程序文件没有后缀名造成的。 解决办法:将原有文件移出工程,将文件的后缀名改为.C,然后再加入工程中。

四、没有main函数

CODE:

C:\\icc\\bin\\imakew -f main.mak iccavr -c -IC:\\icc\\include\\ -e -DATMEGA -DATMega16 -l -g -Mavr_enhanced D:\\桌面\\实验教程\\LED应用\\霓虹灯\\main.c

iccavr -o main -LC:\\icc\\lib\\ -g -ucrtatmega.o -bfunc_lit:0x54.0x4000 -dram_end:0x45f -bdata:0x60.0x45f -dhwstk_size:16 -beeprom:1.512 -fihx_coff -S2 @main.lk -lcatmega !ERROR file 'crtatmega.o': undefined symbol '_main' C:\\icc\\bin\\imakew.exe: Error code 1 Done: there are error(s). Exit code: 1

解决办法,编写程序主函数MAIN。

五、没有选择目标芯片出现如下错误:

CODE:

C:\\icc\\bin\\imakew -f main.mak

iccavr -c -IC:\\icc\\include\\ -e -l -g -Wa-W D:\\桌面\\实验教程\\LED应用\\霓虹灯\\main.c

iccavr -o main -LC:\\icc\\lib\\ -g -Wl-W -bfunc_lit:0.0x2000 -dram_end:0x25f -bdata:0x60.0x25f -dhwstk_size:16 -beeprom:1.512 -fihx_coff -S2 @main.lk

!E C:\\icc\\lib\\crtAVR.o(41): Code address 0 already contains a value !E C:\\icc\\lib\\crtAVR.o(41): Code address 0x1 already contains a value C:\\icc\\bin\\imakew.exe: Error code 1

Done: there are error(s). Exit code: 1

解决办法:project>>Options>>target>>device configuration 选择合适的芯片。

六、缺少分号

CODE:

C:\\icc\\bin\\imakew -f main.mak iccavr -c -IC:\\icc\\include\\ -e -DATMEGA -DATMega16 -l -g -Mavr_enhanced D:\\桌面\\实验教程\\LED应用\\霓虹灯\\main.c

!E D:\\桌面\\实验教程\\LED应用\\霓虹灯\\main.c(52): unrecognized statement

!E D:\\桌面\\实验教程\\LED应用\\霓虹灯\\main.c(53): syntax error; found `}' expecting `;'

!E D:\\桌面\\实验教程\\LED应用\\霓虹灯\\main.c(53): syntax error; found `end of input' expecting `}'

C:\\icc\\bin\\imakew.exe: Error code 1 C:\\icc\\bin\\imakew.exe: 'main.o' removed. Done: there are error(s). Exit code: 1

上面的报告说明了第52行缺少一个分号,预期分号的地方出现了“}”。 解决方法,在52行末尾添加分号。 类似的有:缺少}的报错 CODE:

C:\\icc\\bin\\imakew -f main.mak iccavr -c -IC:\\icc\\include\\ -e -DATMEGA -DATMega16 -l -g -Mavr_enhanced D:\\桌面\\实验教程\\LED应用\\霓虹灯\\main.c

!E D:\\桌面\\实验教程\\LED应用\\霓虹灯\\main.c(55): illegal statement termination !E D:\\桌面\\实验教程\\LED应用\\霓虹灯\\main.c(55): skipping `void'

!W D:\\桌面\\实验教程\\LED应用\\霓虹灯\\main.c(55):[warning] calling function without prototype may cause errors

!E D:\\桌面\\实验教程\\LED应用\\霓虹灯\\main.c(56): syntax error; found `{' expecting `;' !E D:\\桌面\\实验教程\\LED应用\\霓虹灯\\main.c(57): syntax error; found `end of input' expecting `}'

C:\\icc\\bin\\imakew.exe: Error code 1

C:\\icc\\bin\\imakew.exe: 'main.o' removed. Done: there are error(s). Exit code: 1

七:变量没有定义

CODE:

C:\\icc\\bin\\imakew -f main.mak iccavr -c -IC:\\icc\\include\\ -e -DATMEGA -DATMega16 -l -g -Mavr_enhanced D:\\桌面\\实验教程\\LED应用\\霓虹灯\\main.c

!E D:\\桌面\\实验教程\\LED应用\\霓虹灯\\main.c(48): undeclared identifier `i' C:\\icc\\bin\\imakew.exe: Error code 1

C:\\icc\\bin\\imakew.exe: 'main.o' removed. Done: there are error(s). Exit code: 1

解决办法:在程序开始前添加变量定义,比如unsigned char i;注意,定义变量要在函数的最前面进行,及在进行计算操作之前定义所有变量。

八:其他错误

!E touchpad.c(67): unrecognized statement

!E touchpad.c(68): syntax error; found `void' expecting `;'

上一行缺少“;”号所致。

!W touchpad.c(325):[warning] calling function without prototype may cause errors

没有在头文件中添加调用的函数库

!E E:\\ICCAVR\\icc\%user001\\main.c(100): undeclared identifier `temp'

错误:变量'temp'未声明

!E D:\\iccavr6.31.A\\icc\\lib\\crtAVR.(41):Codeaddress 0 already contains a value !E D:\\iccavr6.31.A\\icc\\lib\\crtAVR.(41):Codeaddress 0x1 already contains a value

没有选择芯片型号。

!E library(31) area ' text' not large enough

程序空间不够。

?!E _3Q0.AAA(0): area 'data' not large enough

内存不足

C:/icc/include/iom8v.h(18): D:\\icc圆织机程序\\8.c(288): Macro redefinition of TWBR

重复定义TWBR

calling function without prototype may cause errors

没有extern声明

!E lianxi.o(103): multiple define: '_main'

main函数重复了,应该只能有一个main.

[warning] declaring a function without prototype may cause errors 函数原型没有声明。

你调用的某个函数没有声明。

Ambiguous operators need parentheses 不明确的运算需要用括号括起

Ambiguous symbol ``xxx`` 不明确的符号

Argument list syntax error 参数表语法错误

Array bounds missing 丢失数组界限符

Array size toolarge 数组尺寸太大

联系合同范文客服:xxxxx#qq.com(#替换为@)