【问题标题】:Create mex for Matlab on Linux with different compilers在 Linux 上使用不同的编译器为 Matlab 创建 mex
【发布时间】:2017-05-28 17:32:59
【问题描述】:

我知道 Linux Matlab 只官方支持 gcc 4.9 for mex。

有谁知道如何让 Linux Intel 编译器 (icc) 在 Linux 或更新版本的 gcc 上与 mex 一起工作?

这是最新版本的 Matlab (2015-2017)。

【问题讨论】:

  • "这个软件只支持A,怎么做B?"让我试着回答,即使它很明显:你不能,它只支持 A
  • 我不知道这是否可能,但您是否尝试过在 Matlab 环境之外使用 Matlab 的 C++ API 编译 dll 文件,例如使用 CMake,或在 IDE 下QT又成功了?如果你的编译器成功了,那么 Mex 就有很大的机会。仅供参考,mex 是一个具有特殊入口函数 mexFunction 的 dll。如果没有该网关功能,您将不得不使用 calllib 加载通用 dll。我记得我在某处看到过如何使用 cmake 编译 mex。
  • OK 找到了。希望这有帮助。 Compile MEX File

标签: linux matlab gcc mex icc


【解决方案1】:

我假设您谈论的是 C++ 项目。是的,可以使用较新版本的 gcc。

  • 查看supported compilers 了解哪个 Matlab 使用哪个 gcc 版本。
  • 告诉您较新版本的 gcc 使用制作您的 Matlab 的 gcc 版本的 ABI 版本来编译您的项目和所有依赖项。
  • 告诉 Matlab 使用 /usr/lib 中的标准 c++ 库,而不是它本身包含的库。它向后兼容。

Matlab 2017b 的 gcc > 4.9.x 示例:

  • Matlab 2017b 是使用 gcc 4.9.x 构建的
  • gcc 4.9.x 兼容CXX ABI version 8
  • 将您的 gcc 与编译标志 -fabi-version=8 用于您的 mex 文件和所有依赖项
  • 在调用 matlab 之前的 shell export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6

【讨论】:

    猜你喜欢
    • 2012-01-23
    • 2017-04-23
    • 1970-01-01
    • 1970-01-01
    • 2014-05-29
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多