我有一个用 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 文件并在该环境中添加路径。