Calling a c++ function on Rstudio on a MAC and getting (clang: error: unsupported option '-fopenmp')

Calling a c++ function on Rstudio on a MAC and getting (clang: error: unsupported option '-fopenmp')

我知道如何编码,但我真的不知道如何使用计算机。

我有一个程序,我必须 运行 完成我的硕士论文。它是一个具有多个协作的代码,并且 运行 完美地在 Linux 上。但是,它是一个非常复杂的模拟代码,因此需要时间 运行 用于多个参数。我在大学时一直在使用我的 Linux 来 运行,但我想 运行 在我的个人计算机上 运行 一些 (MAC OS)。它通过使用 R 语言调用 c++ 函数来工作,如下所示(文件名是 c++ 上的代码)。

在 Rstudio 脚本上:

Sys.setenv("PKG_CPPFLAGS" = "-fopenmp -DPARALLEL") 
system("rm filename.so") 
system("rm filename.o") 
system ("R CMD SHLIB filename.cpp") 
dyn.load("filename.so")

system ("R CMD SHLIB filename.cpp") 之后出现错误:

clang: error: unsupported option '-fopenmp' make: *** [filename.o] Error 1

我研究过这个主题并发现了这个 Enable OpenMP support in clang in Mac OS X (sierra & Mojave)

我已经安装了 LLVM,但我不知道如何在这种情况下使用它。

在这种情况下我该如何使用它? 提前谢谢你。

“不要那样做。”阅读 R 和 Rcpp 并使用适当的工具(特别是打包 and/or 编译),应该 尽可能选择 OpenMP。特别是,

对手动构建编译命令说“不”除非你知道你在用 R 做什么并且已经阅读 Writing R Extensions carefully a few times. It can be done, I used to show how in tutorials and workshops (see old slides from 12-15 years ago on my website) but we first moved to package inline which helps here, and later relied on the much better Rcpp Attributes.

现在,macOS 有一些额外的障碍,哪些工具有效,哪些工具无效。 rcpp-devel mailing list may be of help, the default step is otherwise to consult the tutorial by James.

编辑: 当然,如果您“只是想让上面的方法起作用”,请尝试 删除 导致错误, 使用

Sys.setenv("PKG_CPPFLAGS" = "") 

因为你的 macOS 盒子似乎有一个编译器但没有 OpenMP(据我所知,这是默认的,这要归功于 Apple 的一些“令人惊讶的”默认选择 - 请参阅上述安装帮助教程。)