无法用 openmp 编译
Posted
技术标签:
【中文标题】无法用 openmp 编译【英文标题】:Cannot compile with openmp 【发布时间】:2015-01-26 10:16:14 【问题描述】: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
...但结果对我来说是一样的。
我错过了什么吗?非常感谢提前。
【问题讨论】:
可能重复:Using openmp on windows with mingw. Cannot find -lpthread 现在可以使用了。 cplusplus.com/forum/general/154524 【参考方案1】:pthread
是 POSIX 线程库。-lpthread
是链接器参数,这意味着您正在尝试将二进制文件与 pthread
链接。
该错误表示此库在您的操作系统上不可用。
您似乎在 Windows 上使用 mingw
。
毫不奇怪 pthread
在 Windows 上不可用,因为它是一个 POSIX 库。
但您可能会在 MinGW 网站上找到一些方法: http://www.mingw.org/wiki/pthreads_library
看来您必须安装一个名为 pthreads-win32
的第三方库:https://sourceware.org/pthreads-win32/
【讨论】:
非常感谢。所以我已经下载了'pthreads-w32-1-10-0-release.tar.gz',但我不知道放在哪里。我是否将此文件夹放入我的 MinGW 文件夹中?也许这问得太多了,但我真的是这个领域的新手。 你应该在 mingw 中有一个 'lib' 或 'usr/lib' 目录,以及其他库。尝试将 pthread 放在这里,因为此目录可能位于链接器搜索路径中。 不幸的是,这不起作用。我现在尝试了几件事,但没有一个有效。只是为什么这个东西如此复杂。无论如何,我现在不想在评论部分发送垃圾邮件。尽管如此,我还是感谢您的努力。以上是关于无法用 openmp 编译的主要内容,如果未能解决你的问题,请参考以下文章