我正在尝试在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创建的实例上完成此操作。
答案 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