提问人:Flerovium 114 提问时间:8/19/2023 最后编辑:Vladimir F Героям славаFlerovium 114 更新时间:8/30/2023 访问量:62
运行 make 命令时出现“对'GOACC_parallel_keyed'的未定义引用”和相关错误
"undefined reference to `GOACC_parallel_keyed' " and related errors coming up while running make command
问:
我正在从事一个项目,我必须优化计算流体动力学求解器的性能。我们的目标是使用 OpenACC 来做到这一点。求解器是使用 fortran90 编写的,并通过 linux 系统中的终端运行。里面有很多目录,如build,bin,cmake,src等。我首先将 OPENACC 指令添加到每个源文件,并尝试使用构建目录中的 make 命令进行编译,但我遇到了一些错误。
我附上了编译器输出的一部分的屏幕截图。显示错误的编译器输出的 SS
答:
0赞
tschwinge
8/30/2023
#1
使用 GCC 时,您会收到以下错误:
test.o: In function `main':
test.c:(.text.startup+0x3c): undefined reference to `GOACC_parallel_keyed'
/tmp/cc8C7CVO.crtoffloadtable.o:(.rodata+0x0): undefined reference to `__offload_func_table'
/tmp/cc8C7CVO.crtoffloadtable.o:(.rodata+0x8): undefined reference to `__offload_funcs_end'
/tmp/cc8C7CVO.crtoffloadtable.o:(.rodata+0x10): undefined reference to `__offload_var_table'
/tmp/cc8C7CVO.crtoffloadtable.o:(.rodata+0x18): undefined reference to `__offload_vars_end'
/tmp/cc0n3gC3.target.o: In function `init':
cc89TnMy.c:(.text+0x19): undefined reference to `GOMP_offload_register_ver'
/tmp/cc0n3gC3.target.o: In function `fini':
cc89TnMy.c:(.text+0x39): undefined reference to `GOMP_offload_unregister_ver'
collect2: error: ld returned 1 exit status
...如果使用 进行编译,但在调用 GCC 进行链接时不指定后一个标志。(我想构建系统不是直接调用,而是通过 GCC 链接。因此,请确保在链接时也处于活动状态。-fopenacc
ld
-fopenacc
评论
VERBOSE=1