Oct文件在Octave 3.6.4或4.0.0下运行,但不是两者都运行

时间:2015-09-28 18:30:16

标签: 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: cannot open shared object file: No such file or directory

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

1 个答案:

答案 0 :(得分:2)

我从帮助邮件列表中复制Mike和Olaf的答案(交叉http://octave.1599824.n4.nabble.com/Oct-files-run-in-Octave-version-3-6-4-or-4-0-0-but-not-both-td4672690.html

简短回答:你不能。

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

你可以用两个(或三个?)不同的路径编译oct文件 想要在路径中使用Octave版本。

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

fullfile (OCTAVE_HOME (), "lib/octave/site/oct/", octave_config_info ("canonical_host_type"))

假设每个Octave版本的OCTAVE_HOME()都不同。默认情况下,此目录似乎位于路径中。

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