2013-03-26 2 views
0

В последнее время я вынужден вернуться к старому 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. 

ответ

1

Я считаю, что эти символы найдены в GSLIB. Предполагая, что у вас это установлено, и где-то, что ваш компилятор может найти, вам может понадобиться добавить что-то вроде «-lgslib» в вашу команду mex, чтобы связать библиотеку с вами.

+0

Я компилирую скрипт kt3d.for, который находится в пакете GSLIB, но кажется, что он не может найти другие функции. Это ошибка связи? – mercergeoinfo

+0

ОК, вернулся на веб-страницу GSLIB и перечитал инструкции по компиляции и попробовал это на gslib2. Я потерялся. Я скорректировал gslib_compile.bat на sh и запустил это. Кажется, это не дало желаемого результата. Здесь будет выводиться вывод, но «код» мини-Markdown, похоже, не дает читаемого текста. В основном, он не может найти файлы, которые кажутся неразумными, поскольку вложенные папки, в которых они должны существовать, не существуют, исполняемые файлы, по-видимому, находятся непосредственно под/bin – mercergeoinfo

+0

Я не могу сказать, что я когда-либо работал с GSLIB, так что если вы можете изменить свой вопрос, чтобы добавить в свой код, что было бы хорошо. Кроме того, я заметил, что '_mexfunction_' относится к числу недостающих символов, что говорит мне о том, что файл, который вы компилируете, на самом деле не является расширением MATLAB MEX. Есть ли у него функция mexFunction? http://www.mathworks.com/help/matlab/apiref/mexfunction.html – kwatford