我正在尝试将我编写的Matlab程序集成到一些Fortran代码中。我尝试按照示例Mathworks provides进行操作。但我无法编译,因为我找不到它要求的头文件。
有没有人知道某个人使用英特尔编译器在Linux上工作的例子。我认为这可能是问题的一部分,因为Matlab仅支持Linux上的GNU Fortran。
我意识到这是一个简单的问题,我只是不明白如何编译比包含定义路径的多个文件更复杂。
答案 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
它应该正确编译。
我们还没有完成,因为它不会执行。我们需要正确设置bin
和bin/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}}