0

我最近不得不回到一个老问题:编译一个 fortran 脚本以在 Mac 上的 Matlab 下运行。我已经设法将示例 c 文件编译为 mex,但 Fortran 文件拒绝,除非我使用 -c 并且我想要的对象 kt3d.for 抛出了一个有趣的完整列表,但都链接到同一个错误(我猜) .

我正在使用 XCode 4.6.1 在 OSX 10.7.5 上运行 Matlab R2011b。

我已经根据http://www.mathworks.se/support/solutions/en/data/1-FR6LXJ/修补了 Matlab

根据https://sites.google.com/site/dwhipp/tutorials/mac_compilers运行 Fortran 编译器

我将 mex 文件更改为调用 bash 而不是 sh 但仍然没有乐趣。每次我想运行克里金包时都不得不启动我的旧 XP 机器,所以我真的很想为 OSX 编译这些东西。

下面是错误,它看起来像一个架构问题,但我不知道如何解决它。

>> mex kt3d.for
Undefined symbols for architecture x86_64:
  "_chknam_", referenced from:
      _readparm_ in kt3d.o
  "_cova3_", referenced from:
      _kt3d_ in kt3d.o
  "_ktsol_", referenced from:
      _kt3d_ in kt3d.o
  "_mexfunction_", referenced from:
     -exported_symbol[s_list] command line option
  "_picksup_", referenced from:
      _kt3d_ in kt3d.o
  "_setrot_", referenced from:
      _kt3d_ in kt3d.o
  "_setsupr_", referenced from:
      _kt3d_ in kt3d.o
  "_srchsupr_", referenced from:
      _kt3d_ in kt3d.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

    mex: link of ' "kt3d.mexmaci64"' failed.

Error using mex (line 206)
Unable to complete successfully.
4

1 回答 1

1

我相信这些符号可以在GSLIB中找到。假设你已经安装了这个并且你的编译器可以在某个地方找到它,你可能需要在-lgslib你的 mex 命令中添加类似“”的东西来让它为你链接库。

于 2013-03-26T17:18:34.550 回答