【问题标题】:OpenMP support on OSX 10.11, gcc errors with "file omp.h not found"OSX 10.11 上的 OpenMP 支持,“找不到文件 omp.h”的 gcc 错误
【发布时间】:2016-01-23 13:28:35
【问题描述】:

我一直在使用 gcc 5.3.0 版。它说它带有openmp支持。但是每次当我使用 gcc [通过终端] 或通过 xCode 7 编译程序时,我都会收到同样的错误,“找不到文件 omp.h”。我在这个问题上搜索了太多,几乎所有我找到的东西都试过了。

  • 首先我尝试在我的 Mac 上找到 omp.h。我找到了一些文件;然后在头文件中,我使用了 omp.h 的特定位置,但没有帮助[它给了我链接器错误]。
  • 我安装了 gcc 6.0 版(预发行版)但没有帮助。我尝试更改 C_INCLUDE_PATH [现在是,以前设置为 none],但这对我也没有帮助。
  • 我重新安装了 clang-omp 但没有帮助。
  • 我正在使用 llvm 编译器版本 7.0。虽然我已经安装了 clang-omp,但我的 /usr/include/* 中没有 omp.h

【问题讨论】:

  • clang-omp 标头由 Homebrew 安装在 /use/local... 中。使用“brew ls clang-omp”或“find /use/local -name omp.h”来了解它的确切位置。

标签: c macos gcc openmp llvm-clang


【解决方案1】:

我更改了编译器,现在我可以运行它了。 [这是clang的问题,我无法解决]。 我是一名学生,英特尔正在为 Intel Parallel Studio 提供 1 年的 free to students 许可证。 所以我下载并安装了它。 在 xCode 中,在构建设置下,我将编译器设置为“英特尔 C/C++ 编译器”,在并行化中,我将其设置为“是”。就是这样。然后编译成功。但是,请注意,您将不再使用头文件“omp.h”。 顺便说一句,我还在寻找答案,只是想知道我做错了什么。

【讨论】:

  • 不再使用标头是什么意思?您需要标头来声明 OpenMP 运行时库符号,如果您使用 C99 或更高版本,则需要此标头。
  • 不知道为什么,还是显示openmp.h not found。但是我的代码现在可以运行了,没有头文件,输出也是如此。 [是的,我知道这很奇怪,但那是正在发生的:/ ]
  • OpenMP 标头是omp.h。 OpenMP 编译器不会提供openmp.h
  • 我前段时间也遇到了同样的问题,我的解决方案可能对你有帮助:stackoverflow.com/a/35417448/4603100
【解决方案2】:

您可以通过 Homebrew 安装“clang-omp”或“gcc”(目前对应于 GCC 5.3)软件包,它们都支持 OpenMP。

内置的 GCC 基于 GCC 4.2.1 abs 通过 Dragonegg 使用 LLVM 后端,这就是它不支持 OpenMP 的原因。

如前所述,英特尔编译器支持 Mac 上的 OpenMP。

我不使用 Xcode 编辑器,所以我不知道如何从那里使用这些编辑器,但所有这些都可以在终端上运行,就像在 Linux 上一样。

【讨论】:

    【解决方案3】:

    mac上的编译器是clang(基于llvm 3.5),不支持openmp。 您可以尝试install llvm/clang/openmp from source 或使用prebuild binaries,但我必须承认does not work as advertised for me... 编辑,除非您使用-fopenmp=libomp 标志。

    【讨论】:

    • clang-omp 的 Homebrew 安装对我有用。我已经很多年没有尝试从源代码构建了。 Homebrew 配方可能会显示从源代码构建所需的任何补丁。
    • 通过源代码和二进制安装解决了问题,直到 3.8,-fopenmp 标志不起作用,但 -fopenmp=libomp 起作用。
    猜你喜欢
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多