我已将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。
答案 0 :(得分:3)
您还需要将-fopenmp
传递给链接器。看起来你试图这样做,但是你有一个语法错误导致链接器看到-fopenmp,
(最后有一个逗号逗号)。检查你的makefile。
(您似乎也将hello.cpp
传递给链接器而不是hello.o
,因此您的代码会被编译两次。)