【问题标题】:How to switch from Apple to Homebrew-installed clang?如何从 Apple 切换到 Homebrew 安装的 clang?
【发布时间】:2020-10-06 12:07:47
【问题描述】:

我正在尝试在 R 上安装一个名为 XBART 的包。我使用 RStudio 作为我的 IDE,并在控制台中安装:'install_github("jingyuhe/XBART")'。该软件包需要 C++ 编译器,我使用的是 clang++。但是,我不断收到以下错误:

clang:错误:不支持的选项“-fopenmp”

通过搜索,Apple clang 似乎不支持 OpenMP,这就是我收到此错误的原因。我尝试安装外部 clang('brew install llvm')和 OpenMP('brew install libomp')。不过,它继续使用 Apple 版本的 clang 进行下载。如何让 R 使用这个外部编译器而不是 Apple 版本进行下载?

【问题讨论】:

  • 在使用Apple clang 时,您需要带有-fooenmp-Xpreprocessor 标志。
  • MacOS Big Sur 变得更加复杂,请参阅:stackoverflow.com/a/65334247/12957340
  • @jared_mamrot:我正在学习 C++,教程告诉我可以安装 clang 的自制版本。我的问题是我们不使用builin(xcode)版本clang(或clang++)的情况是什么?
  • 根据我的经验,通过自制软件安装的 gcc/gcc++ 与 openMP 兼容。如果您的代码使用 openMP 进行并行化(即您需要使用 -fopenmp 标志编译它),您需要使用自制版本,因为 macOS 内置的 clang/clang++ 无法正确编译源代码。还有其他支持 gcc 或 clang 的原因,但这是我 @Rainning 的主要原因
  • @jared_mamrot:真的真的非常感谢你!

标签: c++ r macos


【解决方案1】:

您可以使用以下命令安装 brew llvm/clang:

brew update
brew install llvm

在撰写本文时,brew 中的最高 clang 版本是 10.0.1。

这通常会将llvm安装在/usr/local/opt/llvm下,以免与apple clang发生冲突。

您可以在 PATH 前面设置 /usr/local/opt/llvm/bin 或适当设置 CC 和 CXX 环境变量。

在我的机器上,我从源代码(版本 12)编译了最新的 LLVM,将其安装在 /usr/local/opt/myllvm 下,并将 CC/CXX 设置为 clang/clang++。

【讨论】:

    猜你喜欢
    • 2012-02-02
    • 1970-01-01
    • 2021-01-29
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 2022-10-20
    • 1970-01-01
    • 2020-06-03
    相关资源
    最近更新 更多