无法使用 openmp 进行编译

Cannot compile with openmp

本文关键字:编译 openmp      更新时间:2023-10-16

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......但结果对我来说是一样的。

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

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

该错误意味着此库在您的操作系统上不可用。

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

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

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