开发者
资源
SIONLIB-1.7.6 gcc10编译器环境中编译报错问题解决
SIONLIB-1.7.6 gcc10编译器环境中编译报错问题解决
发表于2023/10/12
1.9k21

问题描述:

在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

根因分析:

①报错处为gfortran -w -fallow-argument-mismatch sion_f90.f90,和sion_f90.f90报多处未定义错误

②进入SIONLIB源码目录,并执行命令cd src/fortraninterface进入到编译错误对应源码目录

grep 查询一下相关未定义函数   example: grep -nr lfsion_swap_c_

回显结果:

grep回显有结果,说明该定义在源码中,未找到定义的原因是编译选项有问题

④打开Makefile文件,查看编译指令

报错部分为第112行,编译指令为$(F90) -w -fallow-argument-mismatch sion_f90.f90,参考原编译指令此处缺少编译参数”-c“选项

gcc10版本下,此处不仅要使用-w -fallow-argument-mismatch参数来解决类型不匹配问题,代码的预处理编译参数也不能遗漏

解决方法:

①修改Makefile第112行为”$(F90) -c -w -fallow-argument-mismatch sion_f90.f90“

②同时124131138行添加编译参数-w -fallow-argument-mismatch

③回到sionlib源码目录,执行make clean后重新编译


收藏举报
Level 1
0
帖子
0
粉丝
0
获赞