Last modified: Sun Jun 2 10:51:10 EDT 2019
These instructions were last validated on 2017-10-10 with gcc 7.2.0 for the versions of software indicated below on 64-bit Slackware Linux 14.2.
You will need the Fortran compiler that is an optional install with GCC.
Until 2017, I used ATLAS with full LAPACK included to satisfy the dependencies of Octave. This was always complicated, and now it has become too difficult to get ATLAS to build.
Now, I use OpenBLAS. According to the Octave docs as of 2017-10-11, LAPACK is still a required external package, but Octave appears to be satisfied with the LAPACK included within OpenBLAS.
The following variables are referred to in the builds below:
RELSRC=${HOME}/builds/relsrc # Where the source tarballs are
PFXDIR=/usr/local/stats # Where to install everything
BUILDDIR=/tmp # Where to build everything
CPUN=8 # Number of CPU cores
LIBMAGIC=lib64 # For Slackware64 paths
The following variables go in ~/.bash_profile to capture all of the relevant stuff in the target directory:
export CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}:${PFXDIR}
export INFOPATH=${INFOPATH}${PFXDIR}/share/info:
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${PFXDIR}/lib
export MANPATH=${MANPATH}:${PFXDIR}/share/man
export PATH=${PATH}:${PFXDIR}/bin
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:${PFXDIR}/lib/pgkconfig
export XDG_DATA_DIRS=${XDG_DATA_DIRS}:${PFXDIR}/share/
Source: http://www.openblas.net/
BLAS=OpenBLAS-0.2.20
if [ ! -e ${PFXDIR}/lib/libopenblas.so ]; then
# OpenBLAS auto-detects number of CPUs and word size, doesn't need -j.
cd ${BUILDDIR}
tar xf ${RELSRC}/${BLAS}.tar.gz
cd ${BLAS}
make
make PREFIX=${PFXDIR} install
cd ${BUILDDIR}
rm -rf ${BLAS}
fi
Source: http://www.fltk.org/
Fltk is for optional native graphics in Octave. It will build against Nvidia's GL libs if they are present.
FLTK=fltk-1.3.4-2
if [ ! -f ${PFXDIR}/lib/libfltk.a ]; then
cd ${BUILDDIR}
tar xf ${RELSRC}/${FLTK}-source.tar.gz
cd ${FLTK}
./configure --prefix=${PFXDIR} CFLAGS="-fPIC" CXXFLAGS="-fPIC"
make -j ${CPUN}
make install
cd ${BUILDDIR}
rm -rf ${FLTK}
fi
Source: http://www.octave.org/
Any errors output by configure can be highly misleading. You must read the log to find out what actually happened.
The build process tries to read /usr/lib64/libstdc++.la. If gcc is installed somewhere else a temporary symlink must be created.
OCTV=octave-4.2.1
if [ ! -e ${PFXDIR}/bin/octave ]; then
if [ ! -e /usr/${LIBMAGIC}/libstdc++.la ]; then
ln -f -s `find /usr/local/gcc-* -name libstdc++.la -print` /usr/${LIBMAGIC}/libstdc++.la
fi
cd ${BUILDDIR}
tar xf ${RELSRC}/${OCTV}.tar.xz
cd ${OCTV}
./configure --prefix=${PFXDIR} \
--with-blas="-lopenblas" \
CPPFLAGS="-I${PFXDIR}/include" \
LDFLAGS="-L${PFXDIR}/lib"
make -j ${CPUN}
make install
cd ${BUILDDIR}
rm -rf ${OCTV} /usr/${LIBMAGIC}/libstdc++.la
fi
Many optional dependencies were skipped, as indicated by lots of configure WARNING messages.
Extra packages can be obtained from http://octave.sourceforge.net/ and
installed by doing pkg install whatever.tar.gz from the Octave
prompt (as root).