Ubuntu16.04.01安装Octave4.0.2
Octave for Debian systems
Ubuntu 16.04安装Octave
Ubuntu通过源码编译安装Octave 4.0
Octave 4.0.0 to 4.0.2
按照机器学习第二周课程介绍,在Ubuntu上安装Octave;
由于课程scripts在2017年1月已经更新,因此只需要下载新的文件即可,需要注意课程中有些仍提到Octave4.0.0会出现一些问题。
方法一 从仓库安装
使用命令行安装,Ubuntu16.04.01默认安装Octave4.0.0版本,在运行课程submit脚本时存在问题,因此首先加入软件源并更新,再安装即为4.0.2版本。
sudo apt-add-repository ppa:octave/stable #更新软件源
sudo apt-get update
sudo apt-get install octave
方法二 从源码编译安装
如果安装Octave3.8.2,此方法在make时出现错误。
cd /下载
wget ftp://ftp.gnu.org/gnu/octave/octave-3.8.2.tar.gz #下载Octave3.8.2
tar xf octave-3.8.2.tar.gz #解压
sudo apt-get build-dep octave #安装构建依赖
#此时出现提示"E:您必须在 sources.list 中指定代码源(deb-src) URI"
#因此vim /etx/apt/sources.list文件,去掉所有未注释deb对应的deb-src前的#号
sudo apt-get update
sudo apt-get build-dep octave
cd octave-3.8.2/ #编译安装Octave
./configure
make #此步骤我的虚拟机提示错误如下
make check #检查make是否有错误
sudo make install
sudo octave #运行Octave
make提示错误如下
VirtualBox:~/octave-3.8.2$ make check
Makefile:2848: warning: overriding recipe for target 'check'
Makefile:2410: warning: ignoring old recipe for target 'check'
rm -f bits/stl_algo.h
make all-recursive
make[1]: Entering directory '/home/sum/octave-3.8.2'
Makefile:2848: warning: overriding recipe for target 'check'
Makefile:2410: warning: ignoring old recipe for target 'check'
Making all in libgnu
make[2]: Entering directory '/home/sum/octave-3.8.2/libgnu'
make all-recursive
make[3]: Entering directory '/home/sum/octave-3.8.2/libgnu'
make[4]: Entering directory '/home/sum/octave-3.8.2/libgnu'
make[4]: Nothing to be done for 'all-am'.
make[4]: Leaving directory '/home/sum/octave-3.8.2/libgnu'
make[3]: Leaving directory '/home/sum/octave-3.8.2/libgnu'
make[2]: Leaving directory '/home/sum/octave-3.8.2/libgnu'
Making all in liboctave
make[2]: Entering directory '/home/sum/octave-3.8.2/liboctave'
make all-recursive
make[3]: Entering directory '/home/sum/octave-3.8.2/liboctave'
Making all in cruft
make[4]: Entering directory '/home/sum/octave-3.8.2/liboctave/cruft'
make[4]: Nothing to be done for 'all'.
make[4]: Leaving directory '/home/sum/octave-3.8.2/liboctave/cruft'
make[4]: Entering directory '/home/sum/octave-3.8.2/liboctave'
/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I./array -I./cruft/misc -Inumeric -I./numeric -Ioperators -I./operators -I./system -I./util -I../libgnu -I../libgnu -Wall -W -Wshadow -Wold-style-cast -Wformat -Wpointer-arith -Wwrite-strings -Wcast-align -Wcast-qual -g -O2 -pthread -MT array/array_libarray_la-CSparse.lo -MD -MP -MF array/.deps/array_libarray_la-CSparse.Tpo -c -o array/array_libarray_la-CSparse.lo `test -f 'array/CSparse.cc' || echo './'`array/CSparse.cc
libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I./array -I./cruft/misc -Inumeric -I./numeric -Ioperators -I./operators -I./system -I./util -I../libgnu -I../libgnu -Wall -W -Wshadow -Wold-style-cast -Wformat -Wpointer-arith -Wwrite-strings -Wcast-align -Wcast-qual -g -O2 -pthread -MT array/array_libarray_la-CSparse.lo -MD -MP -MF array/.deps/array_libarray_la-CSparse.Tpo -c array/CSparse.cc -fPIC -DPIC -o array/.libs/array_libarray_la-CSparse.o
array/CSparse.cc: In member function 'ComplexMatrix SparseComplexMatrix::fsolve(MatrixType&, const Matrix&, octave_idx_type&, double&, SparseComplexMatrix::solve_singularity_handler, bool) const':
array/CSparse.cc:5667:19: error: 'cholmod_common {aka struct cholmod_common_struct}' has no member named 'print_function'
cm->print_function = 0;
^
array/CSparse.cc:5672:19: error: 'cholmod_common {aka struct cholmod_common_struct}' has no member named 'print_function'
cm->print_function =&SparseCholPrint;
^
array/CSparse.cc:5676:15: error: 'cholmod_common {aka struct cholmod_common_struct}' has no member named 'complex_divide'
cm->complex_divide = CHOLMOD_NAME(divcomplex);
^
array/CSparse.cc:5677:15: error: 'cholmod_common {aka struct cholmod_common_struct}' has no member named 'hypotenuse'
cm->hypotenuse = CHOLMOD_NAME(hypot);
^
array/CSparse.cc: In member function 'SparseComplexMatrix SparseComplexMatrix::fsolve(MatrixType&, const SparseMatrix&, octave_idx_type&, double&, SparseComplexMatrix::solve_singularity_handler, bool) const':
array/CSparse.cc:5910:19: error: 'cholmod_common {aka struct cholmod_common_struct}' has no member named 'print_function'
cm->print_function = 0;
^
array/CSparse.cc:5915:19: error: 'cholmod_common {aka struct cholmod_common_struct}' has no member named 'print_function'
cm->print_function =&SparseCholPrint;
^
array/CSparse.cc:5919:15: error: 'cholmod_common {aka struct cholmod_common_struct}' has no member named 'complex_divide'
cm->complex_divide = CHOLMOD_NAME(divcomplex);
^
array/CSparse.cc:5920:15: error: 'cholmod_common {aka struct cholmod_common_struct}' has no member named 'hypotenuse'
cm->hypotenuse = CHOLMOD_NAME(hypot);
^
array/CSparse.cc: In member function 'ComplexMatrix SparseComplexMatrix::fsolve(MatrixType&, const ComplexMatrix&, octave_idx_type&, double&, SparseComplexMatrix::solve_singularity_handler, bool) const':
array/CSparse.cc:6201:19: error: 'cholmod_common {aka struct cholmod_common_struct}' has no member named 'print_function'
cm->print_function = 0;
^
array/CSparse.cc:6206:19: error: 'cholmod_common {aka struct cholmod_common_struct}' has no member named 'print_function'
cm->print_function =&SparseCholPrint;
^
array/CSparse.cc:6210:15: error: 'cholmod_common {aka struct cholmod_common_struct}' has no member named 'complex_divide'
cm->complex_divide = CHOLMOD_NAME(divcomplex);
^
array/CSparse.cc:6211:15: error: 'cholmod_common {aka struct cholmod_common_struct}' has no member named 'hypotenuse'
cm->hypotenuse = CHOLMOD_NAME(hypot);
^
array/CSparse.cc: In member function 'SparseComplexMatrix SparseComplexMatrix::fsolve(MatrixType&, const SparseComplexMatrix&, octave_idx_type&, double&, SparseComplexMatrix::solve_singularity_handler, bool) const':
array/CSparse.cc:6423:19: error: 'cholmod_common {aka struct cholmod_common_struct}' has no member named 'print_function'
cm->print_function = 0;
^
array/CSparse.cc:6428:19: error: 'cholmod_common {aka struct cholmod_common_struct}' has no member named 'print_function'
cm->print_function =&SparseCholPrint;
^
array/CSparse.cc:6432:15: error: 'cholmod_common {aka struct cholmod_common_struct}' has no member named 'complex_divide'
cm->complex_divide = CHOLMOD_NAME(divcomplex);
^
array/CSparse.cc:6433:15: error: 'cholmod_common {aka struct cholmod_common_struct}' has no member named 'hypotenuse'
cm->hypotenuse = CHOLMOD_NAME(hypot);
^
Makefile:5418: recipe for target 'array/array_libarray_la-CSparse.lo' failed
make[4]: *** [array/array_libarray_la-CSparse.lo] Error 1
make[4]: Leaving directory '/home/sum/octave-3.8.2/liboctave'
Makefile:8987: recipe for target 'all-recursive' failed
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory '/home/sum/octave-3.8.2/liboctave'
Makefile:3410: recipe for target 'all' failed
make[2]: *** [all] Error 2
make[2]: Leaving directory '/home/sum/octave-3.8.2/liboctave'
Makefile:2117: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/sum/octave-3.8.2'
Makefile:1982: recipe for target 'all' failed
make: *** [all] Error 2