从英特尔Fortran(Linux)调用Matlab

时间:2015-09-24 19:31:25

标签: linux matlab fortran fortran90 intel-fortran

我正在尝试将我编写的Matlab程序集成到一些Fortran代码中。我尝试按照示例Mathworks provides进行操作。但我无法编译,因为我找不到它要求的头文件。

有没有人知道某个人使用英特尔编译器在Linux上工作的例子。我认为这可能是问题的一部分,因为Matlab仅支持Linux上的GNU Fortran。

我意识到这是一个简单的问题,我只是不明白如何编译比包含定义路径的多个文件更复杂。

1 个答案:

答案 0 :(得分:4)

免责声明:我目前正在使用OS X,所以我只能提供OS X的输出,但由于Unix基础,一切都应该很容易转移到Linux。我也没有OS X上的英特尔Fortran编译器(只有C / C ++编译器)。

注意:根据您的MATLAB安装目录,您需要将我用于路径的路径替换为系统上的正确路径。

此问题并非针对英特尔编译器,我也会收到GCC Fortran编译器的错误。

$ locate fintrf.h
/Applications/Matlab R2014a.app/extern/include/fintrf.h

您可以使用Unix fengdemo.F命令查找文件。

-I

-I../../include/ 所在的目录中,我们可以使用fintrf.h选项传递正确的目录

-L

但是,这会产生链接错误,因为我们还没有指定可以找到maci64的库的位置。我们可以使用bin选项执行此操作(您需要使用正确的Linux选项替换-L../../../bin/maci64/ - 我无法记住它,但您应该能够在-leng -lmx目录中看到它)

$ ifort fengdemo.F -I../../include/ -L../../../bin/maci64/ -leng -lmx

现在我们需要告诉它使用PATH的库,所以完成的命令是

DYLD_LIBRARY_PATH

它应该正确编译。

我们还没有完成,因为它不会执行。我们需要正确设置binbin/maci64个环境变量。具体来说,我们需要将MATLAB安装的PATH$ export PATH=$PATH:/Applications/Matlab\ R2014a.app/bin/maci64:/Applications/Matlab\ R2014a.app/bin 目录添加到bin/maci64/

sys/os/maci64/

以及DYLD_LIBRARY_PATH$ export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/Applications/Matlab\ R2014a.app/bin/maci64/:/Applications/Matlab\ R2014a.app/sys/os/maci64/ DYLD_LIBRARY_PATH

LD_LIBRARY_PATH

注意:在Linux上$ ./a.out 应为{{1}}。感谢Vladimir F纠正我。

现在您可以使用

执行程序
{{1}}