问题描述:
在gcc10编译器环境下编译SIONLIB,修改gfortran编译参数为”-w -fallow-argument-mismatch“后出现以下报错
gfortran -w -fallow-argument-mismatch sion_f90.f90
/usr/bin/ld: /usr/lib/gcc/aarch64-linux-gnu/10.3.1/../../../../lib64/crt1.o: in function `__wrap_main':
(.text+0x38): undefined reference to `main'
/usr/bin/ld: /tmp/ccqsZacF.o: in function `__sion_f90_MOD_lfsion_fread_character':
sion_f90.f90:(.text+0x54): undefined reference to `lfsion_fread_c_'
/usr/bin/ld: /tmp/ccqsZacF.o: in function `__sion_f90_MOD_lfsion_fread_logical':
sion_f90.f90:(.text+0x94): undefined reference to `lfsion_fread_c_'
/usr/bin/ld: /tmp/ccqsZacF.o: in function `__sion_f90_MOD_lfsion_fread_complex':
sion_f90.f90:(.text+0xd4): undefined reference to `lfsion_fread_c_'
/usr/bin/ld: /tmp/ccqsZacF.o: in function `__sion_f90_MOD_lfsion_fread_double_precision':
sion_f90.f90:(.text+0x114): undefined reference to `lfsion_fread_c_'
/usr/bin/ld: /tmp/ccqsZacF.o: in function `__sion_f90_MOD_lfsion_fread_real':
sion_f90.f90:(.text+0x154): undefined reference to `lfsion_fread_c_'
/usr/bin/ld: /tmp/ccqsZacF.o:sion_f90.f90:(.text+0x194): more undefined references to `lfsion_fread_c_' follow
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
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 encoding” :改成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>报错删除相应报错点代码即可。
添加我为好友,拉您入交流群!
请使用微信扫一扫!