IAR平台进行编译时常见错误:

1.IAR编辑时出现如下错误:

                        Near constant start address + size must be less than ...

      错误原因是:代码对应的Device 芯片选型错误。

      解决方法:将General Options/ Device 下拉选项选择对应的芯片类型;

           例如:设置为RL->R7F0C->RL78->R7Fxxxxx

            如果没有RL_R7F0C选项则在  IAR Systems / Embedded workspace 7.4/rl78 中添加两个补丁文件

              1.config文件;2.Inc文件

2.IAR中设置输出bin文件,右键工程名->option->output converter->output

  勾选两个选项框 ,在output format选择binary

   设置输出hex文件,有两种方式:

              方式1:同上,只是在output 选项中选择Intel Extended

             方式2:打开IAR工程选项,选中linker->output

3.IAR中工程目录下显示为暗灰色带X号的文件表示此文件不参与次Project的编译,设置方法为在Project某个具体文件上右键->option->exclude from build 即可。

4.IAR 开发工具的工程文件管理思想是这样的:一个workspace里可以包含对个Project,而一个Project又可以存在多种不同的配置,具体参考 help->IDE Project manage and build Guide。

5.在IAR中存储生成的hex及bin文件的目录路径不能有中文字符,否则会报错:

  Error while running ieftool exe -- hex --verboose

6.IAR编译出现 unrecongnized token Error[pe007]......是因为代码中有中文输入模式下输入的字符。

7.IAR编译出现warning [pe223]:funtion "get_offset_alig"declare implicity 是因为没有声明函数原型。

8.IAR中出现 Not a member of the active project.

这个问题的原因是因为:文件备份后文件夹路径改变。

解决方法:IAR具有清除编译器的功能,在workspace中右键工程名->clean 将以前编译过的信息全部清除。然后重新rebuild all。

9.IAR出现warning [pe047]:incompatible redefinination of macro 

是因为有同名的宏但定义不同。

10.IAR中出现Error[Li006]:duplicate define for .....

原因:一个变量在多个文件中被定义,初始化。

解决方式:在引用的.c文件中加extern。

11.IAR中出现Error[Li005]:no definition for....

原因:变量在使用时只是申明了 ,而没有进行定义

解决方式:比如在a.h中定义了一个结构体 struct tan{int a,charb}  然后在a.h中申明 extern struct tan pc 

当在a.c中使用时需要定义struct tan pc    不定义这个就会报错。

12.IAR中出现#error directive:“must spefical device type !!!”

     原因:宏定义判断条件写错

     解决方式:改正写错的宏。

13.IAR中出现 Error [pe159]:declaration is incompation with previous

   (函数的声明与调用,参数类型,参数个数,返回值类型需要一致。)

原因:就是说,你的函数声明写在了调用之后,比如你在51行调用了函数,但是函数的定义在159行,编译器误把你的函数定义当成了函数调用,而把函数调用当做了函数声明。

解决方式:1.在调用函数之前先声明

                  2.将函数定义在调用之前

14.IAR中出现了warning [pe174]:expression has no effect

       说明此句是无效的,对程序无影响。

       1.提示你去掉这句代码,可以使代码效率更高。

       2.编译怀疑你的表达式没有写完,给你提示一下。

15.IAR中出现[pe012]:parsing restart here after previous syntax error :

      出现此问题原因是少了一个大括号。

16.IAR 连接源文件时出现duplicate definitions错误

原因:就是多个文件定义全局变量的时候一个变量的定义间接地出现在了多个地方。
例如,变量flag在文件stm32f4xx_it.h中定义了一次,然后被main.c包含进来,又被定义了一次,所以就出现错误。

解决方法:

首先,要知道的是全局变量的定义要放在.c文件里而不是.h(头文件)中。同时删除头文件中变量的定义。
同时在.h(头文件)中说明变量一下为extern,不然编译的时候会出现未定义错误。(注意:这里说明变量的时候不能再给他赋值,会出错。)

17IAR中出现  .Fatal Error[Li004]: file "F:\IARProject\aboard project\aboard

project920M\Src_BOOT-SWMW470X(4438)\SWMW470X_boot-IAR_7.2\boot7.2\arch

\r5f\fm33a04x\project\SWMW470S\Obj\cstartup.o" is not an object or archive file


原因:找不到这个文件(可能是1.头文件路径不对;2.没有添加这个文件)

解决方式:1修改头文件路径;

                  2添加此文件;

猜你喜欢

转载自blog.csdn.net/qq_42384937/article/details/82388388