В последнее время я вынужден вернуться к старому bugbear: компиляция скрипта fortran для работы под Matlab на Mac. Мне удалось скомпилировать пример файла c в mex, но файл Fortran отказывается, если я не использую -c и объект моего желания, kt3d.for, бросает целый список веселья, но все связаны с той же ошибкой (я думаю) ,Скомпилировать Fortran для mex на Mac
Я запускаю Matlab R2011b на OSX 10.7.5 с XCode 4.6.1.
Я пропатчен Matlab по http://www.mathworks.se/support/solutions/en/data/1-FR6LXJ/
Получил Fortran компилятор работает в соответствии с https://sites.google.com/site/dwhipp/tutorials/mac_compilers
Я измененный файл 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.
Я компилирую скрипт kt3d.for, который находится в пакете GSLIB, но кажется, что он не может найти другие функции. Это ошибка связи? – mercergeoinfo
ОК, вернулся на веб-страницу GSLIB и перечитал инструкции по компиляции и попробовал это на gslib2. Я потерялся. Я скорректировал gslib_compile.bat на sh и запустил это. Кажется, это не дало желаемого результата. Здесь будет выводиться вывод, но «код» мини-Markdown, похоже, не дает читаемого текста. В основном, он не может найти файлы, которые кажутся неразумными, поскольку вложенные папки, в которых они должны существовать, не существуют, исполняемые файлы, по-видимому, находятся непосредственно под/bin – mercergeoinfo
Я не могу сказать, что я когда-либо работал с GSLIB, так что если вы можете изменить свой вопрос, чтобы добавить в свой код, что было бы хорошо. Кроме того, я заметил, что '_mexfunction_' относится к числу недостающих символов, что говорит мне о том, что файл, который вы компилируете, на самом деле не является расширением MATLAB MEX. Есть ли у него функция mexFunction? http://www.mathworks.com/help/matlab/apiref/mexfunction.html – kwatford