Matlab:无法用openmp编译mex(未定义的引用)

时间:2017-12-07 16:22:14

标签: matlab openmp mex

在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)编译也很有用。

你能帮我解决这个问题吗?

提前非常感谢你!

1 个答案:

答案 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的建议。