Octave とは,MATLAB に互換の数値解析ソフトウェア.
◆ このページでは,Octave のソースコードをダウンロードし, Ubuntu や Fedora 上でビルドしてインストールする手順を図解などで説明する.
◆ なぜ,ソースコードからビルドするのか?
などの場合には,この Web ページの手順が参考になるでしょう.
※ Octave をパッケージ (yum) を使ってインストールしたい(わざわざソースコードからビルドしない) 場合は,別の Web ページを見てください.
※ liboctave の使い方については,別のページで説明している.liboctave を使って,Octave の行列関係の機能を呼び出すような C++ のプログラムを簡単に作ることができる.
※ 貴重な情報源: http://www40.atwiki.jp/gnuoctavejp (Octave for Windows メモの著者様による Wiki)
※ 関連Webページ: Octave の活用
http://software.intel.com/en-us/articles/using-intel-mkl-in-gnu-octave/
【要点】
BLAS(Basic Linear Algebra Subprograms)とは,行列演算,ベクトル演算の機能をもったプログラム群です. GotoBLAS や ATLAS は,無料で使えるソフトウェアの中では,BLAS 実装の決定版といってよいでしょう.※ 他にも,優れた実装が複数あります.
<BLAS の主な機能(ごく一部を紹介)>
LAPACK とは,行列に関する種々の計算(連立1次方程式,固有値問題,などなど多数)のソフトウェア. LAPACK は Octave に必要.
※ GotoBLAS は素晴らしいプログラムで,しかも,無料で使える.但し,GotoBLAS はフリーソフトウェアではない.「再配布や,商用・業務利用は原則不可」と明記されている. 再配布不可ですから,ソースコードやビルドしたバイナリを人にあげることはできません(パソコンを借りてインストールしてあげる,ということも難しい,という意味です).
※ GotoBLAS のライセンス条項に「不安」がある場合は,ATLAS を使うことも検討してください.(決して違法なことはしないように).
※ ATLAS も素晴らしいプログラムで,無料で使える. ATLAS は BSD ライセンスとなっているようです.ライセンスは,各自でよく確認してください. ライセンスからいうと,GotoBLAS より使い勝手が良さそうです.
【この Web ページで行うこと】
https://www.gnu.org/software/octave/ Octave の本家 からソースコードをダウンロード.
本 Web ページは,Linux での Octave のビルドとインストール法に焦点をあてていますが, 本 Web ページの作成にあたっては, まず, 「octave for windowsメモの筆者」様(http://www.tatsuromatsuoka.com/octave/jpn/OctaveWinMemo.html (当時の URL,現存しない))に, 2ちゃんねる (http://2ch.net/) の「データ解析ツールoctaveを語ろう」掲示板での議論を通して,数々の貴重なご教示,コメント頂きました. ありがとうございました.
Metis は再配布不可.ビルドしたバイナリであっても再配布不可
GotoBLAS は再配布不可.ビルドしたバイナリであっても再配布不可
あった方が SuiteSparse の実行形式プログラムのビルドなどもできて便利.
などなど.
敬意を込めて, 「octave for windowsメモの筆者」様の URL を記しておきます. http://www.tatsuromatsuoka.com/octave/jpn/OctaveWinMemo.html (当時の URL,現存しない)
⇒ この Web ページは,分かりやすく,また,Octave に関係する種々の有益な情報が載ったページです. 情報の宝庫,オンリーワンの Web ページと言ってよいでしょう.
楽をしたいのでシェルスクリプトを作りました。 1つ1つコマンドを入力したい(シェルスクリプトにしたくない)場合については、この Web ページの下で説明している. Octave バージョン 3.8.0 のインストール(ソースコードを使用)が行われます.前提ソフトウェアとして用いる graphicsmagick, curl, gsl, fftw3, glpk, qrupdate, suitesparce, lapack, atlas のインストールも行う. Ubuntu 12.04 を用いて動作確認済みです.
■ 前準備
Intel のコンパイラやIntel Math Kernel Library を使う場合には、.bashrc などで 「export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/mkl/lib/ia32:/opt/intel/lib/ia32」 あるいは 「export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/mkl/lib/intel64:/opt/intel/lib/intel64」 のように設定しておくこと。
■ シェルスクリプト
#!/bin/bash sudo apt -y install build-essential # GNU gcc, g++, gfortran を使う場合: gcc, g++, gfortran # Intel Compiler を使う場合: CC=icc, icpc, ifort if [ -x /opt/intel/bin/icc ]; then if [ -x /opt/intel/bin/ifort ]; then echo USE Intel Compiler export USEINTEL=YES fi fi if [ -x /opt/intel/bin/compilervars.sh ]; then echo USE Intel MKL export USEMKL=YES fi if [ "$USEMKL" = "YES" ]; then if [ `arch` = 'i686' ]; then source /opt/intel/bin/compilervars.sh ia32 fi if [ `arch` = 'x86_64' ]; then source /opt/intel/bin/compilervars.sh intel64 fi fi # octave 前提ソフトウェア (Octave build dependency softwares) cd /tmp; sudo apt-get source octave3.2 cd /tmp; sudo apt-get build-dep octave3.2 # /etc/ld.so.conf sudo cp /etc/ld.so.conf /etc/ld.so.conf.$$ echo "/usr/local/lib" | sudo tee -a >> /etc/ld.so.conf echo "/usr/local/lib/octave/3.8.0" | sudo tee -a >> /etc/ld.so.conf sudo /sbin/ldconfig # graphicsmagick sudo apt -y install graphicsmagick-dbg sudo apt -y install graphicsmagick sudo apt -y install graphicsmagick-imagemagick-compat sudo apt -y install graphicsmagick-libmagick-dev-compat sudo apt -y install libgraphics-magick-perl sudo apt -y install libgraphicsmagick++1-dev sudo apt -y install libgraphicsmagick++3 sudo apt -y install libgraphicsmagick1-dev sudo apt -y install libgraphicsmagick3 # curl sudo apt -y install curl sudo apt -y install libcurl3-dbg sudo apt -y install libcurl3-gnutls sudo apt -y install libcurl3 sudo apt -y install libcurl4-gnutls-dev # gsl if [ "$USEINTEL" = "YES" ]; then # Intel Compiler mkdir /tmp/gsl cd /tmp/gsl apt-get source gsl sudo apt-get -yV build-dep gsl cd gsl-* CC=icc CXX=icpc F77=ifort dpkg-buildpackage -rfakeroot cd .. sudo dpkg -i *.deb else # package install sudo apt -y install gsl-bin sudo apt -y install libgsl0-dbg sudo apt -y install libgsl0-dev sudo apt -y install libgsl0ldbl fi # fftw3 if [ "$USEINTEL" = "YES" ]; then # Intel Compiler mkdir /tmp/fftw3 cd /tmp/fftw3 apt-get source fftw3 sudo apt-get -yV build-dep fftw3 cd fftw3-* CC=icc CXX=icpc F77=ifort dpkg-buildpackage -rfakeroot cd .. sudo dpkg -i *.deb else # package install sudo apt -y install libfftw3-3 sudo apt -y install libfftw3-dev sudo apt -y install libfftw3-doc fi # glpk if [ "$USEINTEL" = "YES" ]; then # Intel Compiler mkdir /tmp/glpk cd /tmp/glpk apt-get source glpk sudo apt -y install libiodbc2-dev sudo apt-get -yV build-dep glpk cd glpk-* CC=icc CXX=icpc F77=ifort dpkg-buildpackage -rfakeroot cd .. sudo dpkg -i *.deb else # package install sudo apt -y install glpk-doc sudo apt -y install glpk-utils sudo apt -y install libglpk-dev sudo apt -y install libglpk0-dbg sudo apt -y install libglpk0 sudo apt -y install glpk fi # qrupdte if [ "$USEINTEL" = "YES" ]; then # Intel Compiler mkdir /tmp/qrupdate cd /tmp/qrupdate apt-get source qrupdate sudo apt-get -yV build-dep qrupdate cd qrupdate-* CC=icc CXX=icpc F77=ifort dpkg-buildpackage -rfakeroot cd .. sudo dpkg -i *.deb else # package install sudo apt -y install libqrupdate-dev sudo apt -y install libqrupdate1 fi # arpack if [ "$USEINTEL" = "YES" ]; then # Intel Compiler mkdir /tmp/arpack cd /tmp/arpack apt-get source arpack sudo apt-get -yV build-dep arpack cd arpack-* CC=icc CXX=icpc F77=ifort dpkg-buildpackage -rfakeroot cd .. sudo dpkg -i *.deb else # package install sudo apt -y install libarpack2-dbg sudo apt -y install libarpack2-dev sudo apt -y install libarpack2 fi # suitesparse-metis if [ "$USEINTEL" = "YES" ]; then # Intel Compiler mkdir /tmp/suitesparse-metis cd /tmp/suitesparse-metis apt-get source suitesparse-metis sudo apt-get -yV build-dep suitesparse-metis cd suitesparse-metis-* CC=icc CXX=icpc F77=ifort dpkg-buildpackage -rfakeroot cd .. sudo dpkg -i *.deb else # package install sudo apt -y install libsuitesparse-metis-3.1.0 sudo apt -y install libsuitesparse-metis-dbg sudo apt -y install libsuitesparse-metis-dev fi # LAPACK をパッケージを用いてインストール (install the LAPACK softwares using package) sudo apt -y install liblapack-dev sudo apt -y install liblapack-test sudo apt -y install liblapack-doc sudo apt -y install liblapack3gf sudo apt -y install liblapack-pic # BLAS 参照実装のダウンロードとビルド (Download BLAS reference implementarion and build it and install it) cd /tmp if [ ! -f blas.tgz ]; then wget http://netlib.org/blas/blas.tgz fi rm -rf BLAS tar -xvzof blas.tgz cd /tmp/BLAS if [ "$USEINTEL" = "YES" ]; then # Intel Compiler if [ `arch` = 'i686' ]; then make LOADER="ifort -fPIC" FORTRAN="ifort -m32 -fPIC" elif [ `arch` = 'x86_64' ]; then make LOADER="ifort -fPIC" FORTRAN="ifort -m64 -fPIC" fi else # GNU Compiler if [ `arch` = 'i686' ]; then make LOADER="gfortran -fPIC" FORTRAN="gfortran -m32 -fPIC" elif [ `arch` = 'x86_64' ]; then make LOADER="gfortran -fPIC" FORTRAN="gfortran -m64 -fPIC" fi fi cp /tmp/BLAS/blas_LINUX.a /usr/local/lib/libblas_LINUX.a # Octave のインストール(ソースコードを使用) cd /tmp if [ ! -f octave-3.8.0.tar.gz ]; then wget ftp://ftp.gnu.org/gnu/octave/octave-3.8.0.tar.gz fi sudo rm -rf octave-3.8.0 tar -xvzof octave-3.8.0.tar.gz cd octave-3.8.0 if [ "$USEINTEL" = "YES" ]; then # Intel Compiler (インテル C++ Composer XE Linux 版, インテル Fortran Composer XE Linux 版を使う場合) if [ `arch` = 'i686' ]; then echo "source /opt/intel/bin/compilervars.sh ia32" >> ~/.bashrc elif [ `arch` = 'x86_64' ]; then echo "source /opt/intel/bin/compilervars.sh intel64" >> ~/.bashrc fi # if [ `arch` = 'i686' ]; then # Ubuntu 32 bit version (かきかけ. このままでは動かない) export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/mkl/lib/ia32:/opt/intel/lib/ia32 export B1="-lmkl_gf -lmkl_intel -lmkl_intel_thread -lmkl_core -limf -lintlc -liomp5 -lpthread -lquadmath -lm" CC=icc CXX=icpc F77=gfortran F1="-fPIC -DPIC -fomit-frame-pointer -O2 -march=native -I/usr/include -I/opt/intel/mkl/include/ia32 -I/opt/intel/include/ia32 -I/opt/intel/mkl/include/fftw -I/usr/local/include" LDFLAGS="-L/opt/intel/lib/ia32 -L/opt/intel/mkl/lib/ia32" LIBS="-lmetis -lquadmath" CFLAGS="-ipo- -std=c99 $F1" CPPFLAGS="$F1" FFLAGS="$F1" ./configure --enable-static --enable-shared --enable-dl --with-blas="${B1}" --with-lapack="${B1}" --with-fftw3="${B1}" --with-fftw3f="${B1}" PTHREAD_LIBS="-lpthread" elif [ `arch` = 'x86_64' ]; then # Ubuntu 64 bit version (かきかけ. このままでは動かない) export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/mkl/lib/intel64:/opt/intel/lib/intel64 export B1="-lmkl_gf_lp64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -limf -lintlc -liomp5 -lpthread -lquadmath -lm" CC=icc CXX=icpc F77=gfortran F1="-m64 -DMKL_LP64 -fPIC -DPIC -fomit-frame-pointer -O2 -I/usr/include -I/opt/intel/mkl/include/intel64 -I/opt/intel/include/intel64 -I/opt/intel/mkl/include/fftw -I/usr/local/include" LDFLAGS="-L/opt/intel/lib/intel64 -L/opt/intel/mkl/lib/intel64" LIBS="-lmetis -lquadmath" CFLAGS="-ipo- -std=c99 $F1" CPPFLAGS="$F1" FFLAGS="$F1" ./configure --enable-static --enable-shared --enable-dl --with-blas="${B1}" --with-lapack="${B1}" --with-fftw3="${B1}" --with-fftw3f="${B1}" PTHREAD_LIBS="-lpthread" fi else # GNU Compiler (GNU のコンパイラを使う場合) if [ `arch` = 'i686' ]; then # 32 ビット Ubuntu if [-d /opt/intel/mkl/lib/ia32 ]; then # try to use Intel MKL 32bit (GNU のコンパイラ + インテル マス・カーネル・ライブラリー Linux 版) export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/mkl/lib/ia32:/opt/intel/lib/ia32 CC=gcc CXX=g++ F77=gfortran \ CXXFLAGS="-m32 -fPIC -DPIC -fomit-frame-pointer -O2 -march=native -I/usr/include -I/opt/intel/mkl/include/ia32 -I/opt/intel/include/ia32 -I/opt/intel/mkl/include/fftw -I/usr/local/include" FFLAGS="-m32 -fPIC -DPIC -fomit-frame-pointer -O2 -march=native -I/usr/include -I/opt/intel/mkl/include/ia32 -I/opt/intel/include/ia32 -I/opt/intel/mkl/include/fftw -I/usr/local/include" \ export B1="-L/opt/intel/lib/ia32 -L/opt/intel/mkl/lib/ia32 -lmkl_gf -lmkl_intel -lmkl_intel_thread -lmkl_core -limf -lintlc -liomp5 -lmetis -lpthread -lquadmath -lm" ./configure --enable-static --enable-shared --enable-dl \ --with-blas="${B1}" \ --with-lapack="${B1}" \ --with-fftw3="${B1}" \ --with-fftw3f="${B1}" \ PTHREAD_LIBS="-lpthread" fi elif [ `arch` = 'x86_64' && ]; then # 64 ビット Ubuntu if [ -d /opt/intel/mkl/lib/intel64 ]; then # try to use Intel MKL 64bit (GNU のコンパイラ + インテル マス・カーネル・ライブラリー Linux 版) export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/mkl/lib/intel64:/opt/intel/lib/intel64 CC=gcc CXX=g++ F77=gfortran \ CXXFLAGS="-m64 -DMKL_LP64 -fPIC -DPIC -fomit-frame-pointer -O2 -march=native -I/usr/include -I/opt/intel/mkl/include/intel64 -I/opt/intel/include/intel64 -I/opt/intel/mkl/include/fftw -I/usr/local/include" \ FFLAGS="-m64 -DMKL_LP64 -fPIC -DPIC -fomit-frame-pointer -O2 -march=native -I/usr/include -I/opt/intel/mkl/include/intel64 -I/opt/intel/include/intel64 -I/opt/intel/mkl/include/fftw -I/usr/local/include" \ export B1="-L/opt/intel/lib/intel64 -L/opt/intel/mkl/lib/intel64 -lmkl_gf_lp64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -limf -lintlc -liomp5 -lmetis -lpthread -lquadmath -lm" ./configure --enable-static --enable-shared --enable-dl \ --with-blas="${B1}" \ --with-lapack="${B1}" \ --with-fftw3="${B1}" \ --with-fftw3f="${B1}" \ PTHREAD_LIBS="-lpthread" fi elif [ -d /usr/lib/openblas-base ]; then # openBLAS CXXFLAGS="-fomit-frame-pointer -fno-schedule-insns2 -fopenmp -mfpmath=sse -msse3 -fexceptions -O2" \ FFLAGS="-fomit-frame-pointer -fno-schedule-insns2 -fopenmp -mfpmath=sse -msse3 -fexceptions -O2" \ ./configure --enable-shared --enable-dl \ --with-blas="-L/usr/lib/openblas-base -lcblas -lopenblas -lmetis -lquadmath -lgfortran -lgomp -lpthread -ldl" \ --with-lapack="-L/usr/lib/lapack -llapack -L/usr/lib/openblas-base -lopenblas -lmetis -lquadmath -lgfortran -lgomp -lpthread -ldl" elif [ -f /usr/lib/atlas-base/libptf77blas.a ]; then # Ubuntu package LAPACK and ATLAS (GNU のコンパイラ + Ubuntu のパッケージでインストールされた ATLAS と LAPACK) CXXFLAGS="-fomit-frame-pointer -fno-schedule-insns2 -fopenmp -mfpmath=sse -msse3 -fexceptions -O2" \ FFLAGS="-fomit-frame-pointer -fno-schedule-insns2 -fopenmp -mfpmath=sse -msse3 -fexceptions -O2" \ ./configure --enable-shared --enable-dl \ --with-blas="-L/usr/lib/atlas-base -lptf77blas -latlas -lmetis -lquadmath -lgfortran -lgomp -lpthread -ldl" \ --with-lapack="-L/usr/lib/atlas-base -llapack_atlas -llapack -lptf77blas -latlas -lmetis -lquadmath -lgfortran -lgomp -lpthread -ldl" else # 「-llapack -lblas 」でコンパイル F1="-fPIC -DPIC -fomit-frame-pointer -O2 -I/usr/local/include" LDFLAGS="-L/usr/local/lib" LIBS="-lmetis -lgfortran -lgomp -lpthread -ldl -lquadmath" CFLAGS="$F1" CPPFLAGS="$F1" FFLAGS="$F1" ./configure --enable-static --enable-shared --enable-dl --with-blas="-lblas -lgfortran -lgomp -lpthread -ldl -lquadmath" --with-lapack="-llapack -lblas -lgfortran -lgomp -lpthread -ldl -lquadmath" PTHREAD_LIBS="-lpthread" fi fi # memo # LIBS="-lmetis" CFLAGS="-I/usr/local/include -I/usr/local/atlas/include -mieee-fp -DH5_USE_16_API -fomit-frame-pointer -mfpmath=sse -msse3 -fno-schedule-insns2 -fopenmp -fno-tree-loop-optimize -fno-tree-vectorize -fexceptions -march=native -O3 -fopenmp" CPPFLAGS="-I/usr/local/include -I/usr/local/atlas/include -mieee-fp -DH5_USE_16_API -fomit-frame-pointer -mfpmath=sse -msse3 -fno-schedule-insns2 -fopenmp -fno-tree-loop-optimize -fno-tree-vectorize -fexceptions -march=native -O3 -fopenmp" FFLAGS="-DH5_USE_16_API -fomit-frame-pointer -mfpmath=sse -msse3 -fno-schedule-insns2 -fopenmp -fno-tree-loop-optimize -fno-tree-vectorize -fexceptions -march=native -O3 -fopenmp" ./configure --enable-static --enable-shared --enable-dl --with-blas="-L/usr/local/atlas/lib -lptf77blas /usr/local/atlas/lib/libatlas.a -lgfortran -lpthread -lgomp" --with-lapack="-llapack_LINUX -ltmglib_LINUX -L/usr/local/atlas/lib -lptf77blas /usr/local/atlas/lib/libatlas.a -lgfortran -lpthread -lgomp" make -j4 make check sudo make install
Ubuntu の他のバージョンでも同様の手順になります
sudo apt-get -yV update sudo apt-get -yV upgrade sudo reboot
# 前提ソフトウェア cd /tmp; sudo apt-get source octave3.2 cd /tmp; sudo apt-get build-dep octave3.2 # 開発環境等 sudo apt -y install make sudo apt -y install patch sudo apt -y install build-essential sudo apt -y install autoconf sudo apt -y install automake sudo apt -y install autogen sudo apt -y install flex sudo apt -y install bison sudo apt -y install gawk sudo apt -y install libtool sudo apt -y install ccache sudo apt -y install binutils sudo apt -y install openssl sudo apt -y install libgmp3-devel sudo apt -y install libmpfr-dev sudo apt -y install libppl-dev sudo apt -y install libmpc-dev sudo apt -y install cpp sudo apt -y install gcc sudo apt -y install g++ sudo apt -y install gfortran sudo apt -y install libreadline-dev sudo apt -y install gperf sudo apt -y install libftgl-dev sudo apt -y install libgomp1 # gsl sudo apt -y install gsl-bin sudo apt -y install libgsl0-dev sudo apt -y install libgsl0-dbg sudo apt -y install libgsl0ldbl # atlas sudo apt -y install libatlas-base-dev sudo apt -y install libatlas-dev sudo apt -y install libatlas-doc sudo apt -y install libatlas-test sudo apt -y install libatlas3gf-base # lapack sudo apt -y install liblapack-dev sudo apt -y install liblapack-doc sudo apt -y install liblapack-pic sudo apt -y install liblapack-test sudo apt -y install liblapack3gf # pcre sudo apt -y install libpcre3-dev # readline sudo apt -y install libreadline-dev # arpack sudo apt -y install libarpack2-dbg sudo apt -y install libarpack2-dev sudo apt -y install libarpack2 # cURL sudo apt -y install curl sudo apt -y install libcurl3-dbg sudo apt -y install libcurl3-gnutls sudo apt -y install libcurl3 sudo apt -y install libcurl4-gnutls-dev # fftw3 sudo apt -y install libfftw3-3 sudo apt -y install libfftw3-dev sudo apt -y install libfftw3-doc # FLTK sudo apt -y install libfltk1.3-dev # fontconfig sudo apt -y install fontconfig sudo apt -y install libfontconfig1-dev # freetype sudo apt -y install libfreetype6-dev # glpk sudo apt -y install glpk sudo apt -y install libglpk-dev # gl2ps sudo apt -y install libgl2ps-dev # gnuplot sudo apt -y install gnuplot # graphicsmagick sudo apt -y install graphicsmagick-dbg sudo apt -y install graphicsmagick sudo apt -y install libgraphics-magick-perl sudo apt -y install libgraphicsmagick++1-dev sudo apt -y install libgraphicsmagick++3 sudo apt -y install libgraphicsmagick1-dev sudo apt -y install libgraphicsmagick3 # Qhull sudo apt -y install libqhull-dev # qrupdate sudo apt -y install libqrupdate-dev sudo apt -y install libqrupdate1 # qscintilla sudo apt -y install libqscintilla2-dev # qt sudo apt -y install libqt4-dev # SuiteSparse sudo apt -y install libamd2 sudo apt -y install libbtf1 sudo apt -y install libcamd2 sudo apt -y install libccolamd2 sudo apt -y install libcholmod1 sudo apt -y install libcolamd2 sudo apt -y install libcsparse2 sudo apt -y install libcxsparse2 sudo apt -y install libklu1 sudo apt -y install libldl2 sudo apt -y install libsuitesparse-dbg sudo apt -y install libsuitesparse-dev sudo apt -y install libsuitesparse-doc sudo apt -y install libumfpack5 sudo apt -y install libsuitesparse-metis sudo apt -y install libsuitesparse-metis-dev # zlib sudo apt -y install zlib1g-dev
インストール前に「yum check-update; sudo yum update」を実行しておくとトラブルが減るでしょう. これは更新可能な全パッケージを更新するという操作です.
yum check-update sudo yum update
Octave のビルドとインストールに必要になる次のソフトウェアをインストール済みであること.
※ 下記のように「yum install <パッケージ名>」で簡単にインストールできる.
sudo yum -y install bison sudo yum -y install flex sudo yum -y install less sudo yum -y install tetex sudo yum -y install gcc sudo yum -y install gcc-c++ sudo yum -y install gcc-gfortran sudo yum -y install lapack-devel sudo yum -y install blas-devel sudo yum -y install atlas-devel sudo yum -y install ncurses-devel sudo yum -y install zlib-devel sudo yum -y install hdf5-devel sudo yum -y install texinfo sudo yum -y install qhull-devel sudo yum -y install readline-devel sudo yum -y install glibc-devel sudo yum -y install fftw-devel sudo yum -y install gsl-devel sudo yum -y install gperf sudo yum -y install ghostscript sudo yum -y install curl-devel sudo yum -y install pcre-devel sudo yum -y install texinfo-tex sudo yum -y install arpack-devel sudo yum -y install libX11-devel sudo yum -y install suitesparse-devel sudo yum -y install glpk-devel sudo yum -y install gnuplot sudo yum -y install desktop-file-utils sudo yum -y install GraphicsMagick-c++-devel sudo yum -y install fltk-devel sudo yum -y install ftgl-devel sudo yum -y install qrupdate-devel sudo yum -y install rpmlib sudo yum -y install gsl-devel sudo yum -y install ffmpeg sudo yum -y install ffmpeg-devel
cd /tmp wget http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/metis-5.1.0.tar.gz tar -xvzof metis-5.1.0.tar.gz cd metis-5.1.0 make config make sudo make install
Ubuntu では、ATLAS のインストールはパッケージを用いて簡単に行うことができる。 もし、ATLASのパッケージを用いて何かの問題が出たときは、 次の手順で、ATLASのソースパッケージを試すことができる.
インストールに数時間以上かかります.
ATLASのパッケージを用いて問題がなかったときは、この手順を試す必要はありません。
sudo cpufreq-selector -g performance mkdir /tmp/atlas cd /tmp/atlas apt-get source libatlas-dev sudo apt-get -yV build-dep libatlas-dev cd atlas-3.8.4 LANG=C sudo dpkg-buildpackage -uc -us -rfakeroot cd .. sudo dpkg -i *.deb
※ /usr/bin/cpufreq-selector が無いときは「sudo apt -y install gnome-applets」
※ 「sudo dpkg -i *.deb」でエラーが出るときは、BIOS メニューで、CPU の電源管理に関する機能を OFF にすると改善する場合がある
あとで Octave のビルド時に configure を実行しますが,configure でエラーが出る場合,あるいは、octave のテスト時にエラーが出る場合など、 ソースコードからビルドし,インストールすることでエラーが回避できる可能性がある.
※ かなり手間と時間がかかりますので、エラーが出たときのみに試すのがいいと考えます.
<それぞれのインストール手順の Web ページへのリンク>
ここで行うことは, Octave ソースコードをダウンロードすること.
ダウンロードが始まる.
あとで役に立つことが多いので、ダウンロードしておく.(インストール手順は、この Web ページ中に示します)
cd /tmp sudo rm -rf octave-3.8.0 tar -xvzof octave-3.8.0.tar.gz
結果の確認(実行結果の例をここに示す).
設定例は次の通り
■ Octave バージョン 3.8.0 の場合
/usr/local/lib
/usr/local/lib/octave/3.8.0
◆ Ubuntu 12.04 での設定例
sudo /sbin/ldconfig
cd /tmp/octave-3.8.0
configure の実行については,いくつかの場合を説明する.
■ Ubuntu の場合 ■
■ Ubuntu + GNU のコンパイラ + Ubuntu のパッケージでインストールされた OpenBLAS
「sudo apt -y install libopenblas-base libatlas3gf-base」で OpenBLAS のインストールの後, コンソールで次の操作を行う. ◆ configure の操作例
|
■ Ubuntu + GNU のコンパイラ + Ubuntu のパッケージでインストールされた ATLAS と LAPACK
ATLAS をパッケージを用いてインストールの後, コンソールで次の操作を行う. ◆ configure の操作例
|
■ Ubuntu + GNU のコンパイラ + ソースコードからビルドされた ATLAS と LAPACK
ATLAS のインストールの後, コンソールで次の操作を行う. ◆ configure の操作例
|
■ Fedora の場合 ■
■ Fedora + GNU のコンパイラ + パッケージでインストールされた ATLAS と LAPACK
◆ configure の操作例 CC=gcc CXX=g++ F77=gfortran LIBS="-lquadmath -lm" CFLAGS="-O3 -fexceptions" CPPFLAGS="-O3 -fexceptions" FFLAGS="-O3 -fexceptions" ./configure --prefix=/usr/local --enable-static --enable-shared --enable-dl --disable-static --with-blas="-L/usr/lib64/atlas -lptf77blas -latlas -lgfortran -lpthread -lquadmath" --with-lapack="-L/usr/lib64/atlas -llapack -lquadmath" --with-qrupdate-libdir=/usr/local/lib PTHREAD_LIBS="-lpthread"
※ なお,metis をリンクしたい場合には「LIBS="-lmetis -lm"」を付ける. ※ OpenMP も使いたい場合は,CFLAGS と CPPFLAGS に「-fopenmp」を付ける ※ Core2 プロセッサであり,かつ,64 ビット Linux を使っている場合.
つまり,以下の通り CC=gcc CXX=g++ F77=gfortran LIBS="-lquadmath -lm" CFLAGS="-O3 -fexceptions -m64 -march=native -mfpmath=sse -msse4.2" CPPFLAGS="-O3 -fexceptions -m64 -march=native -mfpmath=sse -msse4.2" FFLAGS="-O3 -fexceptions -m64 -march=native -mfpmath=sse -msse4.2" ./configure --prefix=/usr/local --enable-static --enable-shared --enable-dl --disable-static --with-blas="-L/usr/lib64/atlas -lptf77blas -latlas -lgfortran -lpthread -lquadmath" --with-lapack="-L/usr/lib64/atlas -llapack -lquadmath" --with-qrupdate-libdir=/usr/local/lib PTHREAD_LIBS="-lpthread"
|
■ Fedora + GNU のコンパイラ + ソースコードからビルドされた ATLAS と LAPACK
ATLAS を自前でビルドした場合で,それを使いたい場合は,コンソールで次の操作を行う. ATLAS を自前でビルドした場合には「-L/usr/lib64/atlas」の部分は「-L/usr/local/atlas/lib」のように変える.例えば,次のようになる.
|
■ Fedora + GNU のコンパイラ + GotoBLAS
GotoBLAS のビルドとインストールの後, コンソールで次の操作を行う. ◆ configure の操作例 CC=gcc CXX=g++ F77=gfortran LIBS="-lquadmath -lm" CFLAGS="-O3 -fexceptions" CPPFLAGS="-fexceptions" FFLAGS="-O3 -fexceptions" ./configure --prefix=/usr/local --enable-static --enable-shared --enable-dl --disable-static --with-blas="-lgoto -lgfortran -lpthread -lquadmath" --with-lapack="-llapack_LINUX -ltmglib_LINUX -lquadmath" --with-qrupdate-libdir=/usr/local/lib PTHREAD_LIBS="-lpthread" ※ なお,metis をリンクしたい場合には「LIBS="-lmetis -lm"」を付ける. |
※ エラーメッセージが出ていないこと を確認してください
■ Ubuntu の場合 ■
◆ configure の実行結果例
◆ configure の実行結果例
■ Fedora の場合 ■
Fedora 17 での configure の実行結果例
make -j4
エラーメッセージが出ていないこと.
◆ make の実行結果例
◆ make の実行結果例
■ Fedora の場合 ■
Fedora 17 での make の実行結果例
(octave バージョン 3.6.2 の場合)
make check
■ Ubuntu の場合 ■
◆ make check の実行結果例
◆ make check の実行結果例
◆ make check の実行結果例
※ Octave バージョン 3.2.4 の場合, 次のようなエラーが出る場合がある.
scripts/image/imread.m ... octave: magick/semaphore.c:525: LockSemaphoreInfo: Assertion `semaphore_info != (SemaphoreInfo *) ((void *)0)' failed. panic: Aborted -- stopping myself...
これは,GraphicsMagick の新しいバージョンに,Octave バージョン 3.2.4 が対応していないことに起因するエラーである. GraphicsMagick の古いバージョンをインストールすることで解決する場合がある.
■ Fedora の場合 ■
Fedora 17 での make check の実行結果例
Octave バージョン 3.6.2 の場合
sudo make install
□ Ubuntu での実行結果例
X = rand(2000,2000); Y = rand(2000,2000); tic(); Z = X * Y; toc() X = rand(2000,2000); tic(); [L, U, P] = lu(X); toc() X = rand(2000,2000); tic(); [Z, RCOND] = inv(X); toc() X = rand(2000,2000); tic(); [D, RCOND] = det(X); toc() X = rand(2000,2000); tic(); [U, S, V] = svd(X); toc() X = rand(2000,2000); tic(); [Q, R, P] = qr(X); toc() X = rand(2000,2000); Y = rand(2000,2000); tic(); Z = cov(X, Y); toc() X = rand(2000,2000); tic(); [v, L] = eig( cov(X) ); toc() X = rand(2000,2000); B = rand(21); tic(); Z = conv2(X, B, 'full'); toc() X = rand(2000,2000); tic(); Z = fft2(X, 2000, 2000); toc() x = rand(1000000,1); y = rand(1000000,1); tic(); H = convhull(x, y); toc()
◆ 実行結果例
◆ 実行結果例
http://sourceforge.net/projects/octave
詳しい手順は,この Web ページの上の方に記述している.
cd /tmp tar -xvzof octave-forge-bundle-200900607.tar.gz
ホームディレクトリに,ファイル「.octaverc」を作成しておく. 下記の「pkg install ...」の実行時に 「UINT_64_C was not declared in this scope」のようなエラーが出ることを防ぐために、下記の設定を行う.
setenv("CFLAGS", "-D__STDC_CONSTANT_MACROS");
setenv("CXXFLAGS", "-D__STDC_CONSTANT_MACROS");
(方針)
参考 Web ページ https://www.gnu.org/software/octave/doc/interpreter/Installing-and-Removing-Packages.html
cd /tmp ldconfig tar -xvzof /tmp/octave-forge-bundle-20090607.tar.gz # 不要なパッケージの削除 for i in time-2.0.0 financial-0.4.0 communications-1.1.1 ncArray-1.0.0 splines-1.1.0 issa-0.1.2 mechanics-1.2.1 data-smoothing-1.3.0 strings-1.1.0 quaternion-2.0.0 specfun-1.1.0 dicom-0.1.1 geometry-1.5.0 queueing-1.1.0 NaN-2.5.5 actuarial-1.1.0 bim-1.0.1 control-2.3.53 dataframe-0.9.1 econometrics-1.0.8 es-0.0.4 fenv-0.1.0 fits-1.0.2 fl-core-1.0.0 fpl-1.3.1 ga-0.10.0 general-1.3.2 generate_html-0.1.3 gnuplot-1.0.1 gpc-0.1.7 image-1.0.14 io-1.0.19 java-1.2.9 linear-algebra-2.2.0 miscellaneous-1.1.0 msh-1.0.2 nan-2.4.1 nlwing2-1.2.0 nnet-0.1.13 nurbs-1.3.3 ocs-0.1.3 octcdf-1.1.5 octgpr-1.2.0 octproj-1.1.0 ode-1.0.1 odepkg-0.6.12 openmpi_ext-1.1.0 optim-1.2.0 optiminterp-0.3.3 parallel-2.0.6 plot-1.0.8 pt_br-1.0.9 signal-1.1.3 sockets-1.0.8 specfun-1.0.9 statistics-1.1.3 struct-1.0.10 tsa-4.2.4 vrml-1.0.13 fuzzy-logic-toolkit-0.4.1; do A=${i/-*}; rm -f /tmp/octave-forge-bundle-20090607/main/${A}*; rm -f /tmp/octave-forge-bundle-20090607/extra/${A}* ; done # repeat 3 times # 1 回目だけは「-nodeps 」付き for i in /tmp/octave-forge-bundle-20090607/main/*.tar.gz; do echo $i; echo "pkg install -nodeps -global -forge `basename $i .tar.gz | sed 's/\-[0-9\.]*//g'`" | octave; done # octave forge bundle-20090607 が古いので、 # 必要なものを拾う作業が残っている for i in time-2.0.0 financial-0.4.0 communications-1.1.1 ncArray-1.0.0 splines-1.1.0 issa-0.1.2 mechanics-1.2.1 data-smoothing-1.3.0 strings-1.1.0 quaternion-2.0.0 specfun-1.1.0 dicom-0.1.1 geometry-1.5.0 queueing-1.1.0 NaN-2.5.5 actuarial-1.1.0 bim-1.0.1 control-2.3.53 dataframe-0.9.1 econometrics-1.0.8 es-0.0.4 fenv-0.1.0 fits-1.0.2 fl-core-1.0.0 fpl-1.3.1 ga-0.10.0 general-1.3.2 generate_html-0.1.3 gnuplot-1.0.1 gpc-0.1.7 image-1.0.14 io-1.0.19 java-1.2.9 linear-algebra-2.2.0 miscellaneous-1.1.0 msh-1.0.2 nan-2.4.1 nlwing2-1.2.0 nnet-0.1.13 nurbs-1.3.3 ocs-0.1.3 octcdf-1.1.5 octgpr-1.2.0 octproj-1.1.0 ode-1.0.1 odepkg-0.6.12 openmpi_ext-1.1.0 optim-1.2.0 optiminterp-0.3.3 parallel-2.0.6 plot-1.0.8 pt_br-1.0.9 signal-1.1.3 sockets-1.0.8 specfun-1.0.9 statistics-1.1.3 struct-1.0.10 tsa-4.2.4 vrml-1.0.13 fuzzy-logic-toolkit-0.4.1; do echo $i; echo "pkg install -nodeps -global -forge `echo $i | sed 's/\-[0-9\.]*//g'`" | octave; done for i in /tmp/octave-forge-bundle-20090607/extra/*.tar.gz; do echo $i; echo "pkg install -nodeps -global -forge `basename $i .tar.gz | sed 's/\-[0-9\.]*//g'`" | octave; done # 2 for i in /tmp/octave-forge-bundle-20090607/main/*.tar.gz; do echo $i; echo "pkg install -global -forge `basename $i .tar.gz | sed 's/\-[0-9\.]*//g'`" | octave; done for i in time-2.0.0 financial-0.4.0 communications-1.1.1 ncArray-1.0.0 splines-1.1.0 issa-0.1.2 mechanics-1.2.1 data-smoothing-1.3.0 strings-1.1.0 quaternion-2.0.0 specfun-1.1.0 dicom-0.1.1 geometry-1.5.0 queueing-1.1.0 NaN-2.5.5 actuarial-1.1.0 bim-1.0.1 control-2.3.53 dataframe-0.9.1 econometrics-1.0.8 es-0.0.4 fenv-0.1.0 fits-1.0.2 fl-core-1.0.0 fpl-1.3.1 ga-0.10.0 general-1.3.2 generate_html-0.1.3 gnuplot-1.0.1 gpc-0.1.7 image-1.0.14 io-1.0.19 java-1.2.9 linear-algebra-2.2.0 miscellaneous-1.1.0 msh-1.0.2 nan-2.4.1 nlwing2-1.2.0 nnet-0.1.13 nurbs-1.3.3 ocs-0.1.3 octcdf-1.1.5 octgpr-1.2.0 octproj-1.1.0 ode-1.0.1 odepkg-0.6.12 openmpi_ext-1.1.0 optim-1.2.0 optiminterp-0.3.3 parallel-2.0.6 plot-1.0.8 pt_br-1.0.9 signal-1.1.3 sockets-1.0.8 specfun-1.0.9 statistics-1.1.3 struct-1.0.10 tsa-4.2.4 vrml-1.0.13 fuzzy-logic-toolkit-0.4.1; do echo $i; echo "pkg install -global -forge `echo $i | sed 's/\-[0-9\.]*//g'`" | octave; done for i in /tmp/octave-forge-bundle-20090607/extra/*.tar.gz; do echo $i; echo "pkg install -global -forge `basename $i .tar.gz | sed 's/\-[0-9\.]*//g'`" | octave; done # 3 for i in /tmp/octave-forge-bundle-20090607/main/*.tar.gz; do echo $i; echo "pkg install -global -forge `basename $i .tar.gz | sed 's/\-[0-9\.]*//g'`" | octave; done for i in time-2.0.0 financial-0.4.0 communications-1.1.1 ncArray-1.0.0 splines-1.1.0 issa-0.1.2 mechanics-1.2.1 data-smoothing-1.3.0 strings-1.1.0 quaternion-2.0.0 specfun-1.1.0 dicom-0.1.1 geometry-1.5.0 queueing-1.1.0 NaN-2.5.5 actuarial-1.1.0 bim-1.0.1 control-2.3.53 dataframe-0.9.1 econometrics-1.0.8 es-0.0.4 fenv-0.1.0 fits-1.0.2 fl-core-1.0.0 fpl-1.3.1 ga-0.10.0 general-1.3.2 generate_html-0.1.3 gnuplot-1.0.1 gpc-0.1.7 image-1.0.14 io-1.0.19 java-1.2.9 linear-algebra-2.2.0 miscellaneous-1.1.0 msh-1.0.2 nan-2.4.1 nlwing2-1.2.0 nnet-0.1.13 nurbs-1.3.3 ocs-0.1.3 octcdf-1.1.5 octgpr-1.2.0 octproj-1.1.0 ode-1.0.1 odepkg-0.6.12 openmpi_ext-1.1.0 optim-1.2.0 optiminterp-0.3.3 parallel-2.0.6 plot-1.0.8 pt_br-1.0.9 signal-1.1.3 sockets-1.0.8 specfun-1.0.9 statistics-1.1.3 struct-1.0.10 tsa-4.2.4 vrml-1.0.13 fuzzy-logic-toolkit-0.4.1; do echo $i; echo "pkg install -global -forge `echo $i | sed 's/\-[0-9\.]*//g'`" | octave; done for i in /tmp/octave-forge-bundle-20090607/extra/*.tar.gz; do echo $i; echo "pkg install -global -forge `basename $i .tar.gz | sed 's/\-[0-9\.]*//g'`" | octave; done # update echo "pkg update -global" | octave
「pkg install -global -forge ...」を使って簡単に追加できる.
for i in NaN-2.0.4 actuarial-1.1.0 bim-1.0.1 control-2.1.53 dataframe-0.8.2 econometrics-1.0.8 es-0.0.4 fenv-0.1.0 fits-1.0.1 fl-core-1.0.0 fpl-1.2.0 ga-0.9.8 general-1.2.2 generate_html-0.1.3 gnuplot-1.0.1 gpc-0.1.7 image-1.0.14 io-1.0.14 java-1.2.7 linear-algebra-2.0.0 miscellaneous-1.0.11 msh-1.0.2 nan-2.4.1 nlwing2-1.2.0 nnet-0.1.13 nurbs-1.3.3 ocs-0.1.1 octcdf-1.1.2 octgpr-1.2.0 octproj-1.0.2 ode-1.0.1 odepkg-0.6.12 openmpi_ext-1.0.2 optim-1.0.16 optiminterp-0.3.3 parallel-2.0.5 plot-1.0.8 pt_br-1.0.9 signal-1.0.11 sockets-1.0.7 specfun-1.0.9 statistics-1.0.10 struct-1.0.9 tsa-4.1.0 vrml-1.0.11 fuzzy-logic-toolkit-0.2.3; do echo $i; echo "pkg install -global -forge `echo $i | sed 's/\-[0-9\.]*//g'`" | sudo octave; done
「pkg install -global -forge ...」を使って簡単に更新できる.
for i in /tmp/octave-forge-bundle-20090607/main/*.tar.gz; do echo $i; echo "pkg install -global -forge `basename $i .tar.gz | sed 's/\-[0-9\.]*//g'`" | sudo octave; done for i in /tmp/octave-forge-bundle-20090607/extra/*.tar.gz; do echo $i; echo "pkg install -global -forge `basename $i .tar.gz | sed 's/\-[0-9\.]*//g'`" | sudo octave; done
ためしに、video パッケージの機能を使って,avi 形式の動画ファイルの読み込みと、フレーム100番の表示を行ってみる. (OpenCV に付属の avi ファイルを使っています)
pkg load video img = aviread("/usr/local/share/opencv/samples/c/tree.avi", 100); imshow(img);
※ (参考情報)個別のパッケージのインストール方法
なお,octave の「pkg install」だとエラーメッセージが分かりにくいので, エラーが出るけど原因が分からないという場合, 下記のようなコマンドを実行して,エラーの有無を確認するという方法もあります.
cd main tar -xvzof image-1.0.10.tar.gz cd image-1.0.10 cd src sh autogen.sh CFLAGS="-I/usr/local/include/octave-3.6.2 -I/usr/local/include" LDFLAGS="-L/usr/local/lib/octave-3.6.2 -L/usr/local/lib" LIBS="-lavcodec -lavdevice -lavutil -lavformat -lswscale -lpng12 -lm" ./configure make LIBS="-lavcodec -lavdevice -lavutil -lavformat -lswscale -lpng12 -lm" make install
1. Octave をパッケージを用いてインストール | 2. ATLAS 3.8.4 のパッケージ | 3. ATLAS 3.9.81 をビルド | 4. Intel MKL | |||
(a) | 行列と行列の積 | X = rand(2000,2000); Y = rand(2000,2000); Z = X * Y | 1.25 sec | 1.23 sec | 0.30 sec | 0.188 sec |
(b) | LU 分解 (LU decomposition) | X = rand(2000,2000); [L, U, P] = lu(X) | 0.67 sec | 0.70 sec | 0.31 sec | 0.181 sec |
(c) | 正方行列の逆行列 | X = rand(2000,2000); [Z, RCOND] = inv(X) | 1.72 sec | 1.75 sec | 0.58 sec | 0.30 sec |
(d) | 行列式 (determinant) | X = rand(2000,2000); [D, RCOND] = det(X) | 0.63 sec | 0.65 sec | 0.25 sec | 0.118 sec |
(e) | Singular Value Decomposition (SVD), X = U*S*V | X = rand(2000,2000); [U, S, V] = svd(X) | 72 sec | 72 sec | 70 sec | 5.7 sec |
(f) | QR factorization | X = rand(2000,2000); [Q, R, P] = qr(X) | 4.2 sec | 4.2 sec | 1.80 sec | 1.52 sec |
(g) | 分散共分散行列 | X = rand(2000,2000), Y = rand(2000,2000); Z = cov(X, Y) | 1.34 sec | 1.27 sec | 0.32 sec | 0.23 sec |
(h) | 分散共分散行列の固有値と固有ベクトル(主成分分析) | X = rand(2000,2000); [v, L] = eig( cov(X) ) | 13.3 sec | 13.2 sec | 13.7 sec | 2.1 sec |
(i) | 2次元の畳み込み(コンボリューション) | X = rand(2000,2000); B = rand(21); Z = conv2(X, B, 'full') | 4.1 sec | 1.26 sec | 0.73 sec | 0.42 sec |
(j) | 2次元の高速フーリエ変換 (FFT) | X = rand(2000,2000); Z = fft2(X, 2000, 2000) | 0.105 sec | 0.090 sec | 0.098 sec | 0.092 sec |
(k) | convex hull | x = rand(1000000,1); y = rand(1000000,1); H = convhull(x, y) | 0.51 sec | 0.115 sec | 0.126 sec | 0.114 sec |
【お断り】プログラムのテストを行っていない.他のプロセスを止めるなどしていない(従って,比較ではなく,傾向を見るための参考値だと思ってください).※ 単位は秒で,3桁目を四捨五入.
ATLAS 3.8.4 をパッケージを用いてインストール. Octave 3.6.2 をビルド(本ページの手順)
ATLAS 3.9.81 をソースコードからビルドしてインストール. Octave 3.6.2 をビルド(本ページの手順)
Intel MKL をインストール. Octave 3.6.2 をビルド・インストール(本ページの手順)
【実測値の例】
Intel MKL 1125 to 1135 tobe filled
if [ ! -f /usr/lib/libgcc_s.so ]; then if [ -f /usr/lib/gcc/x86_64-linux-gnu/4.6/libgcc_s.so ]; then cd /usr/lib ln -s /usr/lib/gcc/x86_64-linux-gnu/4.6/libgcc_s.so . fi if [ -f /usr/lib/gcc/i386-linux-gnu/4.6/libgcc_s.so ]; then cd /usr/lib ln -s /usr/lib/gcc/i386-linux-gnu/4.6/libgcc_s.so . fi fi see atlaslinux.html # sudo apt -y install libatlas-base-dev # sudo apt -y install libatlas-dev # sudo apt -y install libatlas-doc # sudo apt -y install libatlas-test # sudo apt -y install libatlas3gf-base l libatlas-doc # sudo apt -y install libatlas-test # sudo apt -y install libatlas3gf-base F1="-fPIC -DPIC -fomit-frame-pointer -O2 -I/usr/include/atlas -I/usr/local/include" LDFLAGS="-L/usr/lib/atlas-base -L/usr/local/lib" LIBS="-lmetis -lgfortran -lgomp -lpthread -ldl -lquadmath" CFLAGS="$F1" CPPFLAGS="$F1" FFLAGS="$F1" ./configure --enable-static --enable-shared --enable-dl --with-blas="-lptcblas -lptf77blas -latlas -lgfortran -lgomp -lpthread -ldl -lquadmath" --with-lapack="-llapack_atlas -lptcblas -lptf77blas -latlas -lgfortran -lgomp -lpthread -ldl -lquadmath" PTHREAD_LIBS="-lpthread" # コンパイル時のエラー回避のため rm -f /tmp/malloca.c.$$ cat libgnu/malloca.c | fgrep -v verify > /tmp/malloca.c.$$ cp /tmp/malloca.c.$$ libgnu/malloca.c # cat libcruft/arpack/util/second.f | sed 's/INTRINSIC/EXTERNAL/g' > /tmp/second.f.$$ # cp /tmp/second.f.$$ libcruft/arpack/util/second.f rm -f /tmp/stdio.h.$$ cat libgnu/stdio.h | sed "s/_GL_CXXALIAS_SYS (getchar, int, (void));/\/\/_GL_CXXALIAS_SYS (getchar, int, (void));/g" | sed "s/_GL_CXXALIAS_SYS (putchar, int, (int c));/\/\/_GL_CXXALIAS_SYS (putchar, int, (int c));/g" | sed "s/_GL_CXXALIAS_SYS_CAST (vprintf, int, (const char/\/\/_GL_CXXALIAS_SYS_CAST (vprintf, int, (const char/g" > /tmp/stdio.h.$$ cp /tmp/stdio.h.$$ libgnu/stdio.h # rm -f /tmp/nanosleep.c.$$ cat libgnu/nanosleep.c | sed "s/verify (TYPE/\/\/ verify (TYPE/g" > /tmp/nanosleep.c.$$ cp /tmp/nanosleep.c.$$ libgnu/nanosleep.c #
libgnu/stdio.h を次のように変更
libgnu/verify.h の 「#define _GL_HAVE_STATIC_ASSERT 1」の行をコメントアウト