You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用LLVM版OpenMPI编译时链接阶段出现_rad_8_未定义错误求助

链接阶段LLVM IR差异导致的未定义符号问题

问题现象

使用基于LLVM构建的OpenMPI,结合netcdf-fortran、BLAS、LAPACK等外部库编译应用程序时,所有文件编译无问题,但链接阶段出现如下错误:

ld.lld: error: undefined symbol: _rad_8_
>>> referenced by buildings_rad_walls.f90:26 (/home/rangke/archive/gsam1.4/SRC/BUILDINGS/buildings_rad_walls.f90:26)
>>>               buildings_rad_walls.o:(buildings_rad_walls_)
>>> referenced by buildings_rad_walls.f90:0 (/home/rangke/archive/gsam1.4/SRC/BUILDINGS/buildings_rad_walls.f90:0)
>>>               buildings_rad_walls.o:(buildings_rad_walls_)
>>> referenced by buildings_rad_walls.f90:0 (/home/rangke/archive/gsam1.4/SRC/BUILDINGS/buildings_rad_walls.f90:0)
>>>               buildings_rad_walls.o:(buildings_rad_walls_)
>>> referenced 69 more times
>>> did you mean: _rad_0_
>>> defined in: rad.o
clang-14: error: linker command failed with exit code 1 (use -v to see invocation)

错误提示buildings_rad_walls.f90的第0行和第26行引用了_rad_8_,但该文件及所有源码中均无此变量,第26行仅为if(doshadows.and.flag_sunny) then,仅涉及逻辑类型变量。

Makefile链接配置

链接相关的Makefile内容如下:

LD = mpifort
LDFLAGS = -${ncf_dir}/lib -lnetcdff -lblas -llapack
...
...
...
$(LD) -o $@ $(OBJS) $(LDFLAGS)

其中${ncf_dir}为netcdf-fortran的安装目录。

排查过程

  • 最初怀疑_rad_8_与BLAS/LAPACK的数据类型精度有关,尝试更换BLIS、libflame等不同库,问题依旧。
  • 添加-fdefault-real-8编译选项(将所有实数视为8字节)时,出现LLVM IR相关错误:
mpifort -c -O3 -Mpreprocess -Mextend -mcmodel=large -march=znver2 -r8 -I/usr/include /home/rangke/archive/gsam1.4/SRC/zero.f90
/tmp/rad-9b513e.ll:36:1: error: invalid use of function-local name
%struct_rad_8_ = type < { [4 x i8]  } > 
^
1 error generated.
make: *** [/home/rangke/archive/gsam1.4/makefile:62: rad.o] Error 1
make: *** Waiting for unfinished jobs....

该错误涉及的_rad_8_并非来自应用源码。

  • 最终发现_rad_8_源于LLVM IR(位码):同一代码在AMD 4750U和AMD EPYC 7513上生成的LLVM IR存在差异,EPYC 7513会生成%struct_rad_8_ = type < { [4 x i8] } >,可成功链接;而4750U则不会生成该内容,导致链接失败。

疑问

  1. 这是AMD CPU代际的固有问题吗?
  2. 能否强制AMD 4750U生成对应的LLVM IR内容?

内容的提问来源于stack exchange,提问作者Redshoe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 06:45:08