开发者
资源
openeuler22.03上使用毕昇3.0.0编译某依赖出现的问题及解决方案
openeuler22.03上使用毕昇3.0.0编译某依赖出现的问题及解决方案
发表于2023/08/24
6434

【问题1】

F90-S-0038-Symbol xxx,has not been explicitly declared (xxx.f)

在执行编译过程中,参数暂未明确声明

cuace1.JPG

【根因分析】

排查发现此参数在源码内已有定义,预处理时忽略掉了定义的分支。即为预处理不到位导致。

识别到编译命令使用了macros_xxxx下的CPPFLAGS,但该预处理标志未声明该参数的宏,即BIT32。

【解决方案】

在源码makefile内添加-DBIT32,使之能够准确进入到参数定义的分支,完成预处理。

cuace1.1.JPG

tips:使用毕昇编译器编译时请先配置FC标识,毕昇编译器对应使用flang,GCC编译器对应为gfortran

常规使用export在命令行下配置即可,但有时候需根据实际情况对makefile进行修改。

【问题2】

/usr/bin/ld: read in flex scanner failed

读取flex扫描仪失败

cuace2.JPG

【根因分析】

观察命令得知此过程为链接过程,猜测为缺少修改链接文件所致,命令出现../此层目录,但进入该层目录下未找到任何库文件。

并且,在该层下查看makefile发现编译实际应指定的库文件为../$(LOCAL_LIBRARIES),但配置文件macros_xxxx内$(LOCAL_LIBRARIES)为空。

cuace2.1.JPG

【解决方案】

修改最顶层makefile,给LOCAL_LIBRARIES赋予相应.a文件路径。

cuace2.2.JPG

tips:

①对于链接问题,首先应检索到所链接的库是否指定正确&齐全,随后再进行下一步分析,检查生成的目标文件是否正确等。

②并行编译程序报错且无法准确定位问题时我们可以选择串行编译,有些应用不支持并行编译,强行编译会出错,这也是处理编译问题的一种办法。

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