当我继续尝试学习C ++时,我尝试使用MinGW工具链在Eclipse(C / C ++ Mars 4.5.0)中启用OpenMP。我只想说我不知道如何去做。在项目设置中将-fopenmp
标志添加到C / C ++编译器选项是不够的。我尝试使用GNU Make Builder编译并运行OpenMP提供的以下测试代码:
#include <omp.h>
#include <stdio.h>
int main()
{
#pragma omp parallel printf("Hello from thread %d, nthreads %d\n", omp_get_thread_num(), omp_get_num_threads());
}
Eclipse吐出以下内容:
Building file: ../OpenMPTest.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -fopenmp -MMD -MP -MF"OpenMPTest.d" -MT"OpenMPTest.d" -o "OpenMPTest.o" "../OpenMPTest.cpp"
../OpenMPTest.cpp: In function 'int main()':
../OpenMPTest.cpp:14:23: error: expected '#pragma omp' clause before 'printf'
#pragma omp parallel printf("Hello from thread %d, nthreads %d\n", omp_get_thread_num(), omp_get_num_threads());
^
../OpenMPTest.cpp:15:1: error: expected primary-expression before '}' token
}
^
make: *** [OpenMPTest.o] Error 1
这给了我(可能不正确)的印象,即Eclipse无法找到OpenMP库。
所以,在我将任何事情搞砸到无法修复之前,我想知道我是否可以逐步获得用于在MinGW的Eclipse项目中安装和启用OpenMP的白痴指南。
答案 0 :(得分:1)
不要在#pragma
行上放置任何不应存在的内容。
#pragma
行是预处理器的说明,您的printf
代码不应该在那里。
您的main()
应该是
int main()
{
#pragma omp parallel
{
printf("Hello from thread %d, nthreads %d\n", omp_get_thread_num(), omp_get_num_threads());
}
return 0;
}