我最近不得不回到一个老问题:编译一个 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.