【问题标题】:undefined reference to omp_get_wtime未定义对 omp_get_wtime 的引用
【发布时间】:2013-10-12 08:43:30
【问题描述】:

我在 windows (vista) 下的 GCC (4.8) 中找不到要链接的至极库。我尝试了 -fopenmp -llibgomp -lgomp 编译器指令,但没有一个工作。

我已经有 POSIX 的 GCC(如果启用 C++11,那么 std::thread 可以工作),问题似乎是搜索正确的库并没有提供有用的结果(即使搜索 GCC/mingw 文档)。

所以基本上我无法让this 答案工作(该答案声称适用于大多数编译器,但没有提供有关如何使其工作的其他信息,因此我无法验证它是否真的工作或不是)

现在提供更多信息以使其在大多数系统上运行会很高兴..

谢谢!

【问题讨论】:

    标签: c++ gcc openmp


    【解决方案1】:

    MinGW-w64 基于来自 here 的 GCC 4.8.1 到目前为止没有任何问题。

    示例:C


    main.c

    #include <omp.h>
    #include <stdio.h>
    
    int
    main() {
      double x = omp_get_wtime();
    
      printf("%f\n", x);
    }
    

    构建:

    gcc main.c -lgomp -o test.exe
    

    结果:

    1381572544.299000
    

    示例:C++


    main.cpp

    #include <iostream>
    #include <omp.h>
    
    using std::cout;
    using std::endl;
    
    int
    main() {
      double x = omp_get_wtime();
    
      cout << x << endl;
    }
    

    构建:

    g++ main.cpp -lgomp -o test.exe
    

    结果:

    1.38158e+009
    

    结论


    您的 MinGW 发行版可能有问题。否则我看不出有任何理由让它不起作用。试试上面的方法,看看效果如何。

    【讨论】:

    • 我重新下载了 GCC 4.8 发行版,现在它已编译但测量时间的分辨率为 15 毫秒:/ 不超过 ctime
    • 您要测试的功能非常依赖于实现。也许他们两个都已经在默认情况下使用高分辨率操作系统时钟,这就是为什么你看不到任何区别的原因。另一种可能性是您的基准有一些错误的假设和/或测量的工作负载单元太小而无法捕捉这两个计时器之间的差异。
    • 它对我有用。谢谢。我不知道必须添加这个。
    猜你喜欢
    • 2019-07-22
    • 2011-03-27
    • 2022-01-22
    • 2016-04-04
    • 2015-11-03
    • 2011-08-11
    • 2015-07-20
    • 2019-06-22
    • 2012-04-02
    相关资源
    最近更新 更多