Oct文件在Octave 3.6.4或4.0.0下运行,但不能同时运行

Oct文件在Octave 3.6.4或4.0.0下运行,但不能同时运行,octave,Octave,我安装了两个版本的Octave,通过软件包管理器安装了3.6.4版(Linux Mint Debian),并从源代码编译了4.0.0版。在一个指向.octaverc文件的文件夹中,我还有许多.oct文件。我的问题是4.0.0版无法“查看”这些.oct文件,如果我尝试调用它们,整个会话将崩溃,除非我使用mkoctfile在4.0.0下重新编译它们。但是,这样做意味着版本3.6.4无法“看到”它们,并且尝试调用它们会发出错误消息 failed to load: liboctinterp.so.3:

我安装了两个版本的Octave,通过软件包管理器安装了3.6.4版(Linux Mint Debian),并从源代码编译了4.0.0版。在一个指向.octaverc文件的文件夹中,我还有许多.oct文件。我的问题是4.0.0版无法“查看”这些.oct文件,如果我尝试调用它们,整个会话将崩溃,除非我使用mkoctfile在4.0.0下重新编译它们。但是,这样做意味着版本3.6.4无法“看到”它们,并且尝试调用它们会发出错误消息

failed to load: liboctinterp.so.3: cannot open shared object file: No such file or directory

如何使两个版本都能识别.oct函数,而不必每次重新编译它们

我从帮助邮件列表(交叉发布)中复制Mike和Olaf的答案

简单回答:你不能

Octave库API和ABI在不同版本之间发生变化。八度音阶3.6是liboct{ave,interp}.so.1,八度音阶3.8是liboct{ave,interp}.so.2,4.0是liboct{ave,interp}.so.3。这些库不向前或向后兼容

您可以使用以下命令在两个(或三个?)不同路径中编译oct文件: 在路径中需要八度版本

如果您想在系统范围内安装文件,那么对于不同编译的oct文件,一个很好的候选目录似乎是

fullfile (OCTAVE_HOME (), "lib/octave/site/oct/", octave_config_info ("canonical_host_type"))
假设每个倍频程版本的倍频程_HOME()都不同。默认情况下,此目录似乎位于路径中

如果不是系统范围的,那么可以检查.octaverc中的OCTAVE_VERSION(),并为每个版本设置不同的路径

双重邮寄