【问题标题】:-fopenmp does not include omp.h on amazon linux?-fopenmp 在 amazon linux 上不包括 omp.h?
【发布时间】:2018-11-01 01:24:50
【问题描述】:

我正在尝试在 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 创建的实例上完成的,如果有帮助的话。

【问题讨论】:

    标签: amazon-web-services compilation openmp


    【解决方案1】:

    像往常一样,omp.h 等头文件都带有相关版本的 gcc 编译器。当编译器找不到头文件时,我猜你正在使用不同版本的编译器(在这种情况下不是4.8.5)。

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

    sudo yum list installed | grep gcc
    

    如果有gcc72等其他版本的gcc,可以通过以下方式擦除:

    sudo yum erase gcc72
    

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

    【讨论】:

    • 你可以检查你通过 'gcc -v' 选择的 gcc 安装,看看它是否是用 libgomp 支持构建的。如果没有,安装中将没有 omp.h。如果是这样,如果您将 -fopenmp 选项放置在命令行中它所属的位置,您可能会有更好的运气。自 gcc 4.7 以来就存在使用 OpenMP 支持构建 gcc 的选项,但我同意之前的评论,因为 OpenMP 的使用使当前版本变得可取。
    • 目前,我们可以在 Amazon Linux 上从 yum 存储库安装三个版本的 gcc。 Gcc 4.8 和 6.4 是用 libgomp 编译的,但 7.2 不是。我不知道为什么 7.2 没有用 libgomp 编译。我假设 4.8 和 7.2 都安装在 Gravin 的实例中,所以 -fopenmp 选项失败。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-19
      • 2015-05-05
      • 2020-07-26
      • 2018-06-30
      • 2018-11-22
      • 1970-01-01
      • 2014-11-17
      • 1970-01-01
      相关资源
      最近更新 更多