Matlab mex 选项未更新

Posted

技术标签:

【中文标题】Matlab mex 选项未更新【英文标题】:Matlab mex options not being updated 【发布时间】:2014-08-13 18:33:19 【问题描述】:

我在 Mac OS 10.9.2 上的 matlab r2011a 上使用 mex 编译文件时遇到了许多问题。我知道我需要有编译器标志-std=gnu++11 才能使事情正常进行。我已经更新了 mexopts.sh 文件 (~/.matlab/r2011a/mexopts.sh),以便 CXXFLAGS 添加了所需的标志。但是它似乎不起作用。

如果我查看编译器配置:

cc = mex.getcompilerconfigurations('c++')

返回的cc.details.CompilerFlags 与 mexopts.sh 中的值没有任何关系。这可能就是为什么事情无法正常工作的原因。

关于如何解决此问题以使编译器配置真正反映 mexopts.sh 文件的任何想法?

【问题讨论】:

您是否尝试运行mex -setup 并在进行修改后再次选择编译器? @Praetorian 我认为这只会在我的 mexopts.sh 上复制一个文件,但我会尝试。 它可能,所以你可能想要做一个备份 :) 我不知道这是否真的能解决问题。 它没有修复它,但它破坏了它,我能够真正找到问题。我没有编辑正确的部分! 很高兴有帮助 :D 你应该发布一个答案。 【参考方案1】:

所以我想通了。我只是错过了这样一个事实,即 mexopts.sh 中有许多不同的机器相关部分。虽然,我必须承认,由于 mex 不支持交叉编译,据我所知,Mathworks 确实应该在安装过程中减少 mexopts.sh 以仅反映安装它的计算机的设置。

我只需要向下滚动到标有maci64) 的部分,然后在那里编辑设置。我在CXXFLAGS 变量中添加了适当的标志(-std=gnu++11),它可以工作!

【讨论】:

以上是关于Matlab mex 选项未更新的主要内容,如果未能解决你的问题,请参考以下文章

matlab 解决 错误使用 mex 未找到支持的编译器或 SDK

使用 mex 在 Matlab 中编译 C++ 失败

MATLAB mex - 未定义符号 _max

Matlab:无法使用 openmp 编译 mex(未定义的参考)

mex 文件未在 MATLAB 7.5.0 (R2007b) 中执行

基于 Matlab C 的 Mex 文件,套接字未运行