不能用openmp编译

Cannot compile with openmp

omp.cpp

#include <iostream>
#include <omp.h>

int main() {
  std::cout << "Start" << std::endl;
  #pragma omp parallel
  {
    std::cout << "Hello ";
    std::cout << "World! " << std::endl;
  }
  std::cout << "End" << std::endl;
}

我试图用 g++ omp.cpp -fopenmp 编译上面的代码,但我得到了错误:

c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: cannot find -lpthread

collect2.exe: error: ld returned 1 exit status

我尝试用谷歌搜索 -lpthread 是什么,但我找不到任何东西。我发现最接近的是另一个线程,其中有人编译了 his/her 代码,如下所示:g++ omp.cpp -fopenmp -lpthread ... 但结果对我来说是一样的。

我错过了什么吗?非常感谢。

pthread 是 POSIX 线程库。
-lpthread 是一个 linker 参数,这意味着您正在尝试 link 您的二进制文件 pthread

该错误表示此库在您的 OS 上不可用。

您似乎在 Windows 上使用 mingw
难怪 pthread 在 Windows 上不可用,因为它是一个 POSIX 库。

但您可能会在 MinGW 网站上找到一些获取它的方法: http://www.mingw.org/wiki/pthreads_library

看来您必须安装名为 pthreads-win32 的第三方库:
https://sourceware.org/pthreads-win32/