0

我的情况是,我必须将一些使用 GCC 构建的目标文件链接到我基于 LLVM 的应用程序。问题是应用程序依赖于 LLVM 的 OpenMP 库,而 GCC 对象引用了 GCC 的 OpenMP。因此,我收到了链接器错误。该命令相当复杂,但归结为以下内容:

clang -shared -L../libs -o ../libs/libfoo.so -fopenmp clang_wrapper.o -lgcc_archive -lgfortran -lgcc_s

Undefined symbols for architecture arm64:
  "___aarch64_cas8_acq_rel", referenced from:
      ___foo in libgcc_archive.a(bar.o)
  "___aarch64_ldadd8_relax", referenced from:
      _foo_ in libgcc_archive.a(bar.o)
  "_omp_set_dynamic_8_", referenced from:
      ___foo in libgcc_archive.a(bar.o)
  "_omp_set_nested_8_", referenced from:
      ___foo in libgcc_archive.a(bar.o)
  "_omp_set_num_threads_8_", referenced from:
      ___foo in libgcc_archive.a(bar.o)

上述函数在 LLVM 的 OpenMP 库中不可用,但在 GNU OpenMP 库中。

即使我使用 GCC 作为链接器,是否有某种方法可以使这项工作?最终目标是消除对 GCC 的 OpenMP 库的依赖并改用 LLVM。

4

0 回答 0