0

私は最近、古いバグベアに戻らざるを得なくなりました: Fortran スクリプトをコンパイルして、Mac 上の Matlab で実行します。サンプルの c ファイルを mex にコンパイルすることができましたが、-c を使用しない限り Fortran ファイルは拒否され、目的のオブジェクトである 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 コンパイラを取得しました

shではなくbashを呼び出すようにmexファイルを変更しましたが、それでも喜びはありません。クリギング パッケージを実行するたびに古い 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 に答える