在OS X Yosemite上使用gcc编译器编译OpenMP程序

Tej*_*kar 14 c c++ xcode gcc openmp

$ gcc 12.c -fopenmp
12.c:9:9: fatal error: 'omp.h' file not found
#include<omp.h>
    ^
1 error generated.
Run Code Online (Sandbox Code Playgroud)

在编译openMP程序时,我得到了上述错误.我正在使用OS X Yosemite.我首先尝试通过在终端中键入gcc来安装本机gcc编译器,后来又下载了Xcode,我得到了同样的错误.然后我下载了gcc:

$ brew install gcc
Run Code Online (Sandbox Code Playgroud)

我仍然得到同样的错误.我确实尝试更改编译器路径,它仍显示:

$ which gcc
/usr/bin/gcc
Run Code Online (Sandbox Code Playgroud)

那么如何用gcc编译程序呢?

IKa*_*agh 45

编辑:截至2017年8月13日,--without-multilib选项不再出现在Homebrew中,不应使用.标准安装

brew install gcc
Run Code Online (Sandbox Code Playgroud)

将提供gcc可用于编译OpenMP程序的安装.如下所示,它将被安装/usr/local/bingcc-<version>.Homebrew提供的当前gcc版本(编写时)将安装为gcc-8.您可以使用它来编译具有OpenMP支持的程序

gcc-8 -fopenmp hello.c
Run Code Online (Sandbox Code Playgroud)

或者,您可以在.bashrc文件中添加别名

alias gcc='gcc-8'
Run Code Online (Sandbox Code Playgroud)

然后使用编译

gcc -fopenmp hello.c
Run Code Online (Sandbox Code Playgroud)

注意:我在这里留下原帖,以防对某人有用.

OS X通过XCode和Clang提供的标准gcc不支持OpenMP.要使用OpenMP支持安装Homebrew版本的gcc,您需要安装它

brew install gcc --without-multilib
Run Code Online (Sandbox Code Playgroud)

或者正如@ Mark Setchell所指出的那样

brew reinstall gcc --without-multilib
Run Code Online (Sandbox Code Playgroud)

这将把它安装到/usr/local/bin目录中.Homebrew将安装它,gcc-<version>以免破坏与XCode捆绑的gcc.

  • @cullub它用于构建`gcc`而不支持32位和64位系统.Homebrew需要添加OpenMP支持. (6认同)
  • `--without-multilib`标志是什么意思? (4认同)
  • 我很确定不再需要`--without-multilib`标志.我在今年1月份使用了OpenMP,并且不记得使用这个标志了.任何人都可以验证吗? (3认同)
  • @Jason我在使用OpenMP编译C++代码时遇到错误,直到我将我的gcc升级为gcc-7.1.现在使用`g ++ - 7 hello.cpp -fopenmp`一切正常,我没有使用`--without-multilib`标志. (2认同)