【问题标题】:Generating standalone MEX file with GNU compilers, including libraries使用 GNU 编译器(包括库)生成独立的 MEX 文件
【发布时间】:2012-08-29 22:04:35
【问题描述】:

我编写并编译了一个 MEX 函数以从 MATLAB 例程中调用,它在我的计算机上运行良好。但是,当我尝试让另一台计算机运行我的例程时,它会因错误提示模块不存在而中断。我的 MEX 函数正在引用 GSL 库和其他一些库。我想知道是否可以编译我的 MEX 函数,以便它是独立的。当我说独立时,我的意思是如果我只是将 MEX 文件复制到另一台计算机,并且没有安装库或编译器,它仍然可以工作。

谢谢!

【问题讨论】:

  • 另一台计算机需要具有某些 MATLAB 共享库才能运行您编译的代码。
  • @Ansari 当我编译我的代码时,GSL 库不会自动包含在编译文件中,是吗?
  • 不,它们很可能已链接到您的 MEX 文件中。

标签: matlab gcc g++ gnu mex


【解决方案1】:

您的外部库必须是静态库。那么有很多方法可以做到:

  • 在运行 mex 时添加一个“-static”链接器标志(gcc 选项)。
  • 而不是使用 '-lgsl' 添加 '/path/to/libgsl.a' (Linux)
  • 或者只是将您在 mex 文件中使用的库中的目标文件添加到 mex 命令中

mex 文件本身仍将仅在兼容系统上运行(64 位与 32 位,匹配 libc 版本)。

在 linux 上,要检查您是否已正确编译,请键入“ldd mexfile.mexext”。您的外部库不应显示在列表中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 2017-06-07
    • 2012-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多