当前位置:   article > 正文

c语言gcc编译常见报错及解决方法整理_execution of gcc -b/usr/bin/ failed!

execution of gcc -b/usr/bin/ failed!

一、简介

本文主要是整理c程序编译过程的常见报错的解决方法,方便大家及时解决问题。

二、常见报错及解决方法

1、数组定义错误

../../Libs/cmd/cmd_reboot.c:29:69: error: excess elements in array initializer [-Werror]
unsigned long pmu_arr[3] ={ 0x082000a3, 0xf72000a2, 0x7f2190a2, 0xff };
                                                                    ^~~~
1 error generated.
common.mk:322: recipe for target 'obj_dir/cmd_reboot.o' failed
  • 1
  • 2
  • 3
  • 4
  • 5

定义一个数组 a[n],说明该数组有n个元素,那么这个数组中元素最大的下标是 n–1;而元素 a[i] 表示数组 a 中第 i+1 个元素,数组修改为如下表示即可。

unsigned long pmu_arr[] = { 0x082000a3, 0xf72000a2, 0x7f2190a2, 0xff };
unsigned long pmu_arr[4] = { 0x082000a3, 0xf72000a2, 0x7f2190a2, 0xff };
  • 1
  • 2

2、Not enough information to produce a SYMDEFs file

"/tmp/aerY4D", line 73 (column 6): Warning: L6312W: Empty Execution region description for region _lu_data
Error: L6388E: ScatterAssert expression (ImageLimit(_guard) <= (0x880010000 + 0x70000 - (0x20 * 0x400))) failed on line 79 : (0x880078180 <= 0x880078000)
Not enough information to produce a SYMDEFs file.
Finished: 1 information, 1 warning and 1 error messages.
  • 1
  • 2
  • 3
  • 4

解决方法:
这种报错一般是每个工程目录下有个.sct文件指定的每个工程的内存空间大小,可以根据需要根据需要修改内存值,但是要注意不要跟其他空间重叠,具体定义示例如下。
在这里插入图片描述在这里插入图片描述

3、文件乱码<U+0000>

11-19 10:42:20.779 W   ../../Share/Lib/InfoPage.c:1161:7: error: null character ignored [-Werror,-Wnull-character]
11-19 10:42:20.779 W   <U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000>
  • 1
  • 2

出现这种方式主要是在linux和windows下交叉修改代码导致,Windows的默认编码为GBK,Linux的默认编码为UTF-8。
解决方法:设置程序编码方式
以source insight为例,单个文件乱码解决办法:
方法一:菜单栏中【File】 > 【Reload As Encoding…】 > 【Chinese Simplified (GB18030)】 > 选择后,点击load,问题解决!!!
方法二:可以直接将文件结尾部分多余的空行删掉即可。

所有文件乱码解决办法:
菜单栏中 【Options】 > 【Preferences】 >File标签中,最下面的“Default encod­ing” :改成System Default(Windows ANSI) 或者Chinese Simplified(GB2312) CP:936,点击确定,问题解决!!!

4、未定义或未申明报错

如果只声明函数而没有定义函数(函数的具体实现部分),那么就会直接报错:

Error: L6218E: Undefined symbol function“XXX” (referred from main.o)
  • 1

如果没有声明,但是已经定义了函数,只是会出现警告:

Warning: #223-D: function “XXX” declared implicitly!
  • 1

关于警告Warning:Implicit declaration of function “xxx” is invalid in C99!,说明函数已经定义,是函数的声明存在问题,检查以下几点:
1.函数的声明放在头文件(H文件);
2.函数定义在源文件(C文件);
3.函数的名称是否一致(大小写要一致);
4.声明被调用函数的头文件已经被包含(#include);
5.函数声明的先后顺序(被调用的函数声明放在执行调用函数的声明前面)。

5、代码中误加入中文

  if (r_scratch->s[16] ==PM_SP_FLAG ? TRUE : FALSE<U+FF09>
//出现<U+FF09>报错删除相应报错点代码即可。
  • 1
  • 2

三、其他相关链接

1、C语言常用函数详细总结

2、C语言中指针、数组作为作为函数参数使用总结

3、C语言常见数据类型字节数和打印格式总结

4、C语言、Makefile和shell中添加打印调试信息总结

5、c语言volatile关键字总结

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/201108
推荐阅读
相关标签
  

闽ICP备14008679号