无法用openmp编译

时间:2015-01-26 10:16:15

标签: c++ compilation 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是什么,但我找不到任何东西。我找到的最接近的是另一个线程,其中某人编译了他/她的代码,如下所示:g++ omp.cpp -fopenmp -lpthread ...但结果对我来说是一样的。

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

1 个答案:

答案 0 :(得分:4)

pthread是POSIX线程库 -lpthread是一个链接器参数,这意味着您正在尝试将二进制文件与pthread链接。

错误表示您的操作系统上没有此库。

看起来您在Windows上使用mingw 毫不奇怪pthread在Windows上不可用,因为它是POSIX库。

但您可以在MinGW网站上找到一些方法: http://www.mingw.org/wiki/pthreads_library

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