Amazon web services -fopenmp在AmazonLinux上不包括omp.h?

Amazon web services -fopenmp在AmazonLinux上不包括omp.h?,amazon-web-services,compilation,openmp,Amazon Web Services,Compilation,Openmp,我正试图在Amazon AWS t2.micro实例上编译一个测试openmp程序。它似乎有麻烦。在尝试编译OpenMP hello world程序时,编译器无法找到omp.h,尽管使用了gcc hello\u world.c-fopenmp 之后,我试着运行locate omp.h,并在/usr/lib/gcc/x86_64-amazon-linux/4.8.5/include中找到了它。接下来,我尝试用gcc-I包含该目录进行编译。然后,编译器仍然需要libgomp.spec,这是在堆栈溢出

我正试图在Amazon AWS t2.micro实例上编译一个测试openmp程序。它似乎有麻烦。在尝试编译OpenMP hello world程序时,编译器无法找到omp.h,尽管使用了
gcc hello\u world.c-fopenmp

之后,我试着运行
locate omp.h
,并在
/usr/lib/gcc/x86_64-amazon-linux/4.8.5/include
中找到了它。接下来,我尝试用
gcc-I
包含该目录进行编译。然后,编译器仍然需要
libgomp.spec
,这是在堆栈溢出问题中遇到并解决的

按照上面投票最多的答案创建一些符号链接对我没有任何帮助,仍然说
错误:libgomp.spec:没有这样的文件或目录
,即使
libgomp.spec
在我的
/usr/lib64
目录中


那么,我能做些什么来解决这个问题,为什么
-fopenmp
不能像预期的那样在amazon linux上工作呢?这是在CfnCluster创建的实例上完成的,如果有帮助的话。

像往常一样,诸如omp.h之类的头文件随gcc编译器的相关版本一起提供。当编译器找不到头文件时,我猜您使用的是不同版本的编译器(本例中不是4.8.5)

您可以通过键入以下内容查找所有gcc版本:

sudo yum list installed | grep gcc
如果存在gcc的其他版本,如gcc72,您可以通过以下方式删除它们:

sudo yum erase gcc72

之后,您将成功编译代码。

您可以检查“gcc-v”选择的gcc安装,看看它是否是使用libgomp支持构建的。如果没有,安装中将没有omp.h。如果是,那么如果您将-fopenmp选项放在命令行中它所属的位置,您可能会有更好的运气。从gcc 4.7开始,就有了使用OpenMP支持构建gcc的选项,但我同意前面的评论,因为OpenMP的使用使得当前版本更为可取。目前,我们可以从Amazon Linux上的yum repository安装三个版本的gcc。Gcc 4.8和6.4是用libgomp编译的,但7.2不是。我不知道为什么7.2不是用libgomp编译的。我假设4.8和7.2都安装在Gravin的实例中,所以-fopenmp选项失败。