-fopenmp在亚马逊linux上不包含omp.h吗?

时间:2018-11-01 01:24:50

标签: amazon-web-services compilation openmp

我正在尝试在Amazon AWS t2.micro实例上编译测试openmp程序。好像有麻烦。尝试编译this OpenMP hello world程序时,尽管使用gcc hello_world.c -fopenmp,编译器仍无法找到omp.h。

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

即使在我的error: libgomp.spec: No such file or directory目录中创建了libgomp.spec,也没有通过创建一些符号链接来遵循最令人反感的答案,但仍然对我/usr/lib64毫无帮助。

那么,我该怎么做才能解决此问题,为什么-fopenmp不能在Amazon Linux上正常工作?如果有帮助,可以在CfnCluster创建的实例上完成此操作。

2 个答案:

答案 0 :(得分:0)

像往常一样,头文件(例如omp.h)与gcc编译器的相关版本一起提供。当编译器找不到头文件时,我猜您正在使用其他版本的编译器(本例中为4.8.5除外)。

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

sudo yum list installed | grep gcc

如果还有其他gcc版本,例如gcc72,则可以通过以下方式删除它们:

sudo yum erase gcc72

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

答案 1 :(得分:0)

正如@S.Takezawa 所说,目前只有 gcc 6.4 安装支持 libgomp (fopenmp) 并支持 Amazon AMI linux 上的现代 c++14 标准。 gcc4.7 太旧了。所以这对我有帮助:

 sudo yum install gcc64-c++.x86_64 libgcc64.x86_64