我通过以下方式安装了 Octave:
cd /tmp
wget -c ftp://ftp.gnu.org/gnu/octave/octave-4.0.0.tar.gz
tar -xzf octave*.tar.gz
mv octave* octave && sudo mv octave /opt
sudo chmod 777 -R /opt/octave
./configure CPPFLAGS=-I/usr/include/hdf5/serial LDFLAGS=-L/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)/hdf5/serial JAVA_HOME='/usr/lib/jvm/java-1.7.0-openjdk-i386'
make
sudo make install DESTDIR=/opt/octave/build
该DESTDIR
变量最初设置为/usr/local/share/octave
,运行可执行文件时遇到同样的问题。问题是运行可执行文件/opt/octave/build/usr/local/bin/octave
会给出错误:
➜ octave '/opt/octave/build/usr/local/bin/octave'
octave: failed to exec '/usr/local/libexec/octave/4.0.0/exec/i686-pc-linux-gnu/octave-gui'
显而易见的解决方案是将 的内容移动/opt/octave/build
到/
,从而将可执行文件的路径更改为/usr/local/bin/octave
。但我试图创建一个二进制目录,它可以移动到文件系统上的任何位置,并且仍然可以工作。
但我还想知道如何在我的系统上安装 Octave(以一种不能像二进制包那样移动的方式)。如果是我建议的方式,即移动的内容,/opt/octave/build
请/
告诉我如何从命令行进行操作。
答案1
简短的回答是您应该使用 Octave 来构建,--prefix=DIR
而不是在命令DESTDIR=DIR
上指定make install
,正如评论中所指出的那样。
更根本的问题是如何创建 Octave 的二进制安装,使其可以移动到文件系统的任何位置,并且仍然完全正常运行。答案是目前还无法做到这一点。在编译 Octave 时,其自己的库和脚本的几个路径会被编译到可执行文件中,以便它可以找到自己的运行时。其中一些路径可能可以被覆盖(例如,请参阅一些覆盖默认路径的选项),但目前有些路径无法覆盖,例如或 的octave --help
路径。这些辅助程序的位置完全取决于构建 Octave 时赋予的值。mkoctfile
octave-gui
--prefix