我最近不得不返回老bugbe:編譯fortran腳本以在Mac上運行Matlab。我已經設法將示例c文件編譯爲mex,但Fortran文件拒絕,除非我使用-c和我的願望對象kt3d.for,拋出了一個有趣的列表,但都鏈接到相同的錯誤(我猜) 。將Fortran編譯爲Mac上的mex
我使用XCode 4.6.1在OSX 10.7.5上運行Matlab R2011b。
我根據http://www.mathworks.se/support/solutions/en/data/1-FR6LXJ/
修補Matlab的有一個Fortran編譯根據https://sites.google.com/site/dwhipp/tutorials/mac_compilers
運行我改變了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.
我正在編譯GSLIB包中的kt3d.for腳本,但它似乎無法找到其他函數。這是一個鏈接錯誤? – mercergeoinfo 2013-03-27 10:39:10
好吧,回到GSLIB網頁,重新閱讀編譯指令,並在gslib2上試用。我迷路了。我將gslib_compile.bat調整爲sh並運行。這似乎沒有給出預期的結果。在這裏顯示輸出,但迷你Markdown'代碼'似乎不會產生可讀的文本。基本上它找不到似乎不合理的文件,因爲它們應該存在的子文件夾不存在,可執行文件似乎直接位於/ bin – mercergeoinfo 2013-03-27 11:20:13
我不能說我曾經使用過GSLIB,所以如果你可以編輯你的問題來添加你的代碼,那會很好。另外,我注意到'_mexfunction_'是缺少的符號之一,這表明你正在編譯的文件實際上並不是MATLAB MEX擴展。它實際上是否有一個名爲mexFunction的函數? http://www.mathworks.com/help/matlab/apiref/mexfunction.html – kwatford 2013-03-27 12:02:30