不能用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/
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/