为什么我无法在 Octave 中运行这个可执行文件 (.exe)?

为什么我无法在 Octave 中运行这个可执行文件 (.exe)?

我有一个用 Fortran 90 编写的源代码:sourcecode.f90

它需要 Lapack 库进行编译,因此我使用以下命令编译源代码:

gfortran -o executable.exe sourcecode.f90 -llapack

当我在 Ubuntu 终端中使用以下命令运行该可执行文件时:

./executable.exe

一切运行正常。但是当我尝试在 Octave 脚本中运行相同的可执行文件时,出现了以下行:

system("./executable.exe")

我在 Octave 命令窗口中收到此错误:

./executable.exe: error while loading shared libraries: liblapack.so.3: cannot open shared object file: No such file or directory

有人能帮我理解为什么会发生这种情况吗?我需要在 Octave 中运行 executable.exe 来获取更大的代码,但因此,我无法这样做。

我正在使用带有 Octave 5.2.0 的 Ubuntu 18.04。

答案1

输入以下命令

system('echo $SHELL');
system('echo $LD_LIBRARY_PATH');

看看它们是否和你在 Ubuntu 终端中输入 echo 一样,如果不一样,很可能你是从启动器启动的,它启动了一个非交互式 shell 而不是交互式 shell(这些情况下,它们有不同的 rc 文件,请参阅https://unix.stackexchange.com/a/170499/366890)你至少可以运行

system('LD_LIBRARY_PATH=/path/to/liblapack.so/folder ./executable.exe')

LD_LIBRARYPATH或者,找到正确的 rc 文件并在该环境中添加路径。

相关内容