Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Mac上的OpenMP不再工作_C++_Xcode_Gcc_Clang_Openmp - Fatal编程技术网

C++ Mac上的OpenMP不再工作

C++ Mac上的OpenMP不再工作,c++,xcode,gcc,clang,openmp,C++,Xcode,Gcc,Clang,Openmp,我在Mac上用C/C++编译和执行OpenMP,但后来我格式化并重新安装了一个新的OS X副本。我相信唯一的区别是,在格式化之前我有Xcode 5,现在我有Xcode 6 现在我得到了一个致命错误:找不到omp.h文件 我读到这篇文章与clang和gcc有关,但是,我的困惑在于为什么它以前能工作,现在却不能工作?经过一些研究,我似乎找到了答案 最新版本的Xcode(Xcode 6)中包含的GCC只是到clang的一个符号链接。由于clang此时不支持OpenMP,因此需要安装不同版本的GCC。最

我在Mac上用C/C++编译和执行OpenMP,但后来我格式化并重新安装了一个新的OS X副本。我相信唯一的区别是,在格式化之前我有Xcode 5,现在我有Xcode 6

现在我得到了一个致命错误:找不到omp.h文件


我读到这篇文章与clang和gcc有关,但是,我的困惑在于为什么它以前能工作,现在却不能工作?

经过一些研究,我似乎找到了答案

最新版本的Xcode(Xcode 6)中包含的GCC只是到clang的一个符号链接。由于clang此时不支持OpenMP,因此需要安装不同版本的GCC。最简单的方法是使用自制或MacPorts


请记住,即使这样做,您也可能需要更改
$PATH
,使
/usr/local
位于
/usr/bin
之前。这是因为自制软件将把新安装的GCC放在
/usr/local
中。此外,一些实现可能会将命令命名为
gcc-49
,而不是普通的
gcc

Mac OSX使用clang。OS X中的gcc编译器不支持OpenMP。要使用此功能,需要安装新的gcc编译器

转到终端,如果尚未安装Hombrew,请安装:

/usr/bin/ruby -e "$(curl -fsSL https://`enter code here`raw.githubusercontent.com/Homebrew/install/master/install)"
然后安装新版本的gcc

brew reinstall gcc --without-multilib
这不会对Xcode安装的现有gcc编译器进行更改,因为我们正在重新安装它

运行下面给出的命令后,使用新版本的gcc使用以下语法编译文件:gcc version-fopenmp filename.c


要查找版本类型gcc,请按tab键。这将列出所有可能的gcc变体。可以从中找到版本号。例如:gcc-6、gcc-4.9等

您可能缺少“omp.h”文件吗?如果您使用MacPorts进行此操作,则不必更改
路径
顺序,您只需使用
sudo port select选择
gcc49
,另一个选项是在此处尝试openmp clang实现