Мне нужно вызвать некоторый код Fortran из MATLAB. Я провел некоторое исследование и прочитал о команде mex
и о том, как ее использовать. К сожалению, я уже не могу заставить компилятор Fortran работать.MATLAB mex не ищет компилятор gfortran на macOS
Прежде всего, вот моя установка:
- Macos Sierra 10.12.1 (последняя версия)
- MATLAB R2016b (последняя версия)
- gfortran 4.9.2 (устанавливается с помощью DMG-с официальной сайт GNU)
Согласно документации MATLAB, я могу использовать mex -setup FORTRAN
подготовить mex
для построения MEX-файл из Fortran. Однако, выполнив команду в расширенном режиме дает следующий результат: mex -setup -v FORTRAN
Verbose mode is on.
... Looking for compiler 'Intel Fortran Composer XE' ...
... Looking for environment variable 'IFORT_COMPILER16' ...No.
... Looking for environment variable 'IFORT_COMPILER15' ...No.
... Looking for environment variable 'IFORT_COMPILER14' ...No.
... Looking for environment variable 'IFORT_COMPILER13' ...No.
... Executing command 'which ifort' ...No.
Did not find installed compiler 'Intel Fortran Composer XE'.
Error using mex
No supported compiler or SDK was found. For options, visit
http://www.mathworks.com/support/compilers/R2016b/maci64.html.
link Следуя, можно увидеть, что MATLAB делает поддержку GNU gfortran 4.9.x
на Linux. Однако на Mac перечислены только коммерческие компиляторы Intel. Это то, что ищет mex
.
Поскольку Mac также может использовать gfortran
для компиляции кода Fortran, я думал, что можно будет заставить его работать с MATLAB. Я также много искал в googled и нашел такие вопросы, как this one на форуме MathWorks, который предполагает, что MATLAB должен иметь возможность использовать gfortran
, даже на Mac.
Вот что я думаю странно, мой MATLAB даже не ищет компилятор gfortran
. Все, что он делает - это искать компилятор Intel, не может найти его, а затем выдает указанное выше сообщение об ошибке.
Что касается моего gfortran
установки. Это определенно 4.9.2 (который указан как поддерживаемый в Linux), which gfortran
возвращает /usr/local/bin
, и я могу успешно скомпилировать программы через Terminal.
Кстати, mex -setup ANY
успешно перечисляет компиляторы для C и C++, но не Fortran.
MEX configured to use 'Xcode with Clang' for C language compilation.
Warning: The MATLAB C and Fortran API has changed to support MATLAB
variables with more than 2^32-1 elements. In the near future
you will be required to update your code to utilize the
new API. You can find more information about this at:
http://www.mathworks.com/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html.
MEX configured to use 'Xcode Clang++' for C++ language compilation.
Warning: The MATLAB C and Fortran API has changed to support MATLAB
variables with more than 2^32-1 elements. In the near future
you will be required to update your code to utilize the
new API. You can find more information about this at:
http://www.mathworks.com/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html.
To choose a different C compiler, select one from the following:
Xcode with Clang mex -setup:'/Users/Lennart/Library/Application Support/MathWorks/MATLAB/R2016b/mex_C_maci64.xml' C
Xcode Clang++ mex -setup:'/Users/Lennart/Library/Application Support/MathWorks/MATLAB/R2016b/mex_C++_maci64.xml'
я также имел взглянуть на эти .xml
файлы, упомянутые в самом конце последнего выхода. Не было никакого файла для чего-либо связанного с Fortran, и я не смог успешно написать его сам. Я даже не уверен, что это проблема ...
Так просто поставил мой вопрос: как я могу получить MATLAB на самом деле, а потом, конечно, также найти компилятор gfortran
, чтобы использовать его для компиляции файлов mex
?
Цените свою помощь!
У вас может быть правильное решение, но вы должны как-то описать это в своем ответе. Многие люди действительно ненавидят ответы, подобные этому, и уменьшают их. См. Например, http://meta.stackoverflow.com/questions/265552/when-to-flag-an-answer-as-not-an-answer –