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
...但结果对我来说是一样的。
我错过了什么吗?非常感谢。
答案 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/