0

我正在使用 LLVM 使用 parseInputIR(inputIR) 函数读取 IR 文件;编译它们并执行它们,类似于 llvm 的 Kaleidoscope 示例中所做的。但是,这样做时,我收到错误,抱怨 omp_get_num_procs 不知道如下

clang/bin/Kaleidoscope-Orc-fully_lazy_with_recompile_try prime_toy/main.bc prime_toy/prime_number.bc LLVM 错误:程序使用了无法解决的外部函数“omp_get_num_procs”!

其中一个 IR 文件包含 omp 指令,因此必须链接到 omp 库。我应该使用 dlsym 在 llvm 中添加这种支持。

我的问题是关于 libgomp 版本 - 我想我需要使用来自 llvm 的 openmp 库(http://openmp.llvm.org/)但我没有在其中看到 omp_get_num_procs (只有带后缀的),我想知道为什么。

nm llvm_openmp/openmp/runtime/build/runtime/src/libgomp.so | grep    omp_get_num_procs
0000000000067369 t __kmp_api_omp_get_num_procs
0000000000068180 t __kmp_api_omp_get_num_procs_
0000000000067369 t __kmp_api_omp_get_num_procs_10_alias
0000000000068180 t __kmp_api_omp_get_num_procs__10_alias
0000000000067369 T omp_get_num_procs@@VERSION
0000000000067369 T omp_get_num_procs@OMP_1.0
0000000000068180 T omp_get_num_procs_@@VERSION
0000000000068180 T omp_get_num_procs_@OMP_1.0
4

1 回答 1

0

您看到的后缀(以“@”开头)用于 ELF 符号版本控制,https://sourceware.org/binutils/docs/ld/VERSION.html,很可能您不必特别关心,所以你可以在精神上“剥离它们”。

于 2015-11-20T01:18:36.397 回答