在Matlab 2016b中编译某些C ++代码时使用:
mex CXXFLAGS="\$CXXFLAGS -std=c++11 -fopenmp" CXXOPTIMFLAGS='\$CXXOPTIMFLAGS -Ofast -DNDEBUG mexMyFunction.cpp
我收到了以下错误:
undefined reference to `omp_get_thread_num'
undefined reference to `omp_get_num_threads'
系统:Ubuntu 16.04,g ++版本:5.4.0。
如果我从上面的命令中删除-fopenmp
,那么它工作正常。直接用g ++(没有mex)编译也很有用。
你能帮我解决这个问题吗?
提前非常感谢你!
答案 0 :(得分:1)
缺少以下链接标记:
LDOPTIMFLAGS="$LDOPTIMFLAGS -fopenmp -O2" -lgomp
完成命令:
mex CXXFLAGS="\$CXXFLAGS -std=c++11 -fopenmp" CXXOPTIMFLAGS='\$CXXOPTIMFLAGS -Ofast -DNDEBUG' LDOPTIMFLAGS="$LDOPTIMFLAGS -fopenmp -O2" -lgomp -I"/home/khue/Libs/Eigen" mexMyFunction.cpp
感谢@Zulan的建议。