不能在c ++项目中使用openmp

时间:2014-05-21 09:21:10

标签: c++ openmp

我已将openmp包含在我的项目中。我在compliler标志中有-fopenmp。

g ++ -std = c ++ 0x -O3 -Wall -c -fmessage-length = 0 -march = core2 -fopenmp -ffast-math -fPIC

#pragma omp parallel for
for (int i = 0; i < rows; i++) {
    MatrixXd frame = frames.row(i);
    output.row(i) = dem(frame);
}
return output;

编译时我有这个输出。

hello.cpp:(.text+0x2d88): undefined reference to `omp_get_num_threads'
hello.cpp:(.text+0x2d8f): undefined reference to `omp_get_thread_num'
./hello.o: In function `demodulateMatrix':
hello.cpp:(.text+0x315f): undefined reference to `GOMP_parallel_start'
hello.cpp:(.text+0x316c): undefined reference to `GOMP_parallel_end'

我已经尝试将-fopenmp标志添加到链接器中,并且我有这个输出

g++: error: unrecognized command line option ‘-fopenmp,’
make: *** [libhello.so] Error 1

GCC版本现在是4.8.2。

1 个答案:

答案 0 :(得分:3)

您还需要将-fopenmp传递给链接器。看起来你试图这样做,但是你有一个语法错误导致链接器看到-fopenmp,(最后有一个逗号逗号)。检查你的makefile。

(您似乎也将hello.cpp传递给链接器而不是hello.o,因此您的代码会被编译两次。)