【问题标题】:Matlab: Cannot compile mex with openmp (undefined reference)Matlab:无法使用 openmp 编译 mex(未定义的参考)
【发布时间】:2017-12-07 16:22:13
【问题描述】:

在 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)编译也可以。

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

非常感谢您!

【问题讨论】:

  • 我不知道mex 是如何工作的,但是您还必须将-fopenmp 添加到链接步骤中。
  • @Zulan 非常感谢!我想通了。

标签: matlab openmp mex


【解决方案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 的建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 2022-10-15
    • 1970-01-01
    相关资源
    最近更新 更多