GNU Octave 2.1.x 日本語マニュアル/Octaveのインストールと設定

出典: フリー教科書『ウィキブックス(Wikibooks)』

付記C Octaveのインストールと設定[編集]

WINDOWSシステムへのOctaveのインストールと設定[編集]

最新のシステムの確認[編集]

Octaveのシステムの最新バージョンを確認します。ここでは、octave-3.6.1の例を示しますので、適宜読み替えてください。

http://www.gnu.org/software/octave/download.html

http://www.octave.org/wiki/index.php?title=Octave_for_Windows

Visual C++ライブラリのインストーラーのダウンロードとインストール[編集]

今回は、Visual C++ 2010でコンパイルしたOctaveをインストールします。 そのため、マイクロソフトの’Microsoft Visual C++ 2010 SP1 Redistributable Package (x86)’を、あらかじめインストールしておきます。

http://www.microsoft.com/downloads/ja-jp/details.aspx?familyid=c32f406a-f8fc-4164-b6eb-5328b8578f03

Octaveのダウンロードとインストール[編集]

Sourceforgeから、OctaveのWindows用インストーラーをダウンロードし、インストールします。

ダウンロードするファイル:

octave-3.6.1-vs2010-setup-1.exe

http://sourceforge.net/projects/octave/files/Octave%20Windows%20binaries/

  • ダウンロードしたファイルをダブル・クリックすれば自動的にインストールが始まります。後は、OKをエンターとすればインストールは終了です。
  • グラフィック・システムは、GNU Plotが無難でしょう。
  • ツールキットの専門的な関数を使いたい場合は、インストール時に必要なツールをチェックし、次のパスの設定も行います。

パスの設定[編集]

startupフォルダにあるoctavercファイルを書き換えて、パスを設定します。 この例では、DドライブにOctaveをインストールしたシステムで、communicationsツールの関数を使うために、’D:\Octave-3.6.1\share\octave\3.6.1\m\startup\octaverc’を書き換えることを想定しています。この例では、Octaveのバージョンは3.6.1です。

以下の行を追加する。

 ## D:\Octave-3.6.1\share\octave\3.6.1\m\startup\octaverc
 addpath 'D:\Octave-3.6.1\share\octave\packages\communications-1.1.0'

起動[編集]

Octaveアイコンをダブルクリックします。'1+1'と入力し、Enterしたら、

Octave>1+1
2

となれば、インストール成功です。

エディタ[編集]

Octaveではエディタとしてnotepad++を推奨しています。別途、日本語 notepad++をダウンロードしてインストールしておいてください。 mファイルの編集に使います。 日本語notepad++では、エディタのモードをMATLABに設定すると、GNU OCTAVEのキーワードをハイライトしてくれます。

インストール後に以下の設定を行います。

NotePad++ EUC-JP 対応版 v5.8.7-6の設定[編集]

メニューバーから日本語フォントを設定します。

1)『設定』-『スタイル設定』-『フォント』で、フォント名を『メイリオ』に設定します。 (『MSゴシック』、『MS明朝』等でも良いがあまり美しくない。)

2)『フォント名を他のスタイルにも適用』にチェックをいれる。

3)『フォントサイズを他のスタイルにも適用』にチェックをいれる。

4)『保存して閉じる』

UNIXシステムへのOctaveのインストールと設定[編集]

UNIX システムにおいて,スクラッチからOctave をインストールするための手順を紹介します。

2 シェルスクリプト‘configure’を実行します。 これは,お使いのシステムが持っている(持っていない)機能を判定し,‘Makefile.in’という名前のファイルの各々から,‘Makefile’という名前のファイルを生成します。

Octave をビルドするときに,最も頻繁に使用されるconfigure オプションの要約を示します。

--prefix=prefix

prefix 以下のサブディレクトリにOctave をインストールします。 prefix の初期値は‘/usr/local’です。

--srcdir=dir

ディレクトリdir からOctave のソースを探します。

--with-f2c

Fortran コンパイラが利用可能であっても,f2cを使用します。

--with-f77

Fortran コードをコンパイルするためにf77を使用します。 使用したいコンパイラ 名をオプション引数として指定することもできます。 たとえば,--with-f77=g77 は,Fortran コンパイラ名をg77にセットします。

--enable-shared

共有ライブラリを作成します。 もし--enable-lite-kernelまたは動的ロード機 能を使う予定ならば,おそらくこのオプションを使用したいことでしょう。 このオ プションにより,‘.oct’ファイルはずっと小さくなります。 また,あるシステムに おいては,動的リンク関数を使用するために,共有ライブラリをビルドするために 必要でしょう。

お使いのシステムにlibstdc++の共有版がないときに,それをビルドしたいとも思うかもしれません。 HP-PA アーキテクチャでlibstdc++ のバージョン2.7.2の共有版をビルドするためには,パッチが必要だということに注意してください。

そのパッチは,以下のURL から手に入ります:

ftp://ftp.cygnus.com/pub/g++/libg++-2.7.2-hppa-gcc-fix

--enable-dl

dlopenを使用し,外部でコンパイルされた関数を動的にリンクする機能をOctave に持たせるようにします。 このオプションは,それらの関数を実際にもっているシ ステムにおいてのみ動作します。 もしこの機能を使おうと計画しているならば,お そらく,‘.oct’ファイルのサイズを減らすための--enable-sharedも使用すべき です。

--enable-shl

shl_loadを使用し,外部でコンパイルされた関数を動的にリンクする機能をOctave に持たせるようにします。 このオプションは,それらの関数を実際にもってい るシステム(HP-UX のみ)においてのみ動作します。 もしこの機能を使おうと計 画しているならば,おそらく,‘.oct’ファイルのサイズを減らすための--enable- sharedも使用すべきです。


--enable-lite-kernel

より小さなカーネルをコンパイルします。 現在のところ,このオプションは,動的 リンク関数dlopenまたはshl_loadを必要とします。 また,結果として,コンパ イル時ではなくリンク時に関数をロードできるようになります。

--without-blas

Octave に含まれているBLAS とLAPACK の汎用バージョンをコンパイルして利用します。 初期設定では,configure は,お使いのシステムにあるBLAS およびLAPACK 行列ライブラリ(ベンダーがチューニングしたライブラリだけでなく,フリーのATRAS3.0 のような最適化されたBLAS 実装を含む)を最初に探します。 (最適化BLAS の利用によって,一般に,行列演算が数倍高速になります。) システムにあるBLAS/LAPACK ライブラリが何らかの理由により問題を抱えているときにのみ,このオプションを使用してください。 特定のBLAS ライブラリを指定するために--with-blas=lib,あるいはconfigure が自動的にチェックを行わない-llibも使用することができます。

--help configure スクリプトによって認識されるオプションの要約を表示します。

configure によって使用されるコマンドラインオプションについてのさらなる情報について,ファ イル‘INSTALL’を参照してください。 そのファイルには,ソースが置いてある以外のディレクト リでコンパイルを行うための方法も書かれています。

2 make を実行します。

GNU make の最近のバージョンが必要です。 その他のmake プログラムで動作するようにOctaveのメイクファイルを修正することは,おそらく時間の無駄です。 かわりにGNU make を入手してコンパイルすることを推奨します。

プロットするには,お使いのシステムにgnuplot がインストールされていることが必要になります。 gnuplot はコマンド駆動型の対話的機能を持つプロットプログラムです。 gnuplot は著作権を主張していますが,自由に配布することができます。 gnuplot に‘gnu’ が含まれているのは偶然です? これはGNUプロジェクトあるいは,周辺的な意味においてFSFとは関連がありません。

Octave をコンパイルするためには,最近のバージョンのGNU Make が必要になります。 g++2.7.2 以降も必要です。 バージョン2.8.0 あるいはegcs 1.0.x も動作するでしょう。 より新しいバージョンも動作するでしょうが,C++ は未だに発展しているため,何らかのトラブルに巻き込まれることもあり得ます。

もはやlibg++が存在する必要はありませんが,libstdc++のGNU 実装は存在しなければなりません。 g++ 2.7.2 をお使いならば,libstdc++はlibg++とともに配布されています。 しかし,後のバージョンについては,libstdc++は別個に配布されています。 egcs について,libstdc++はコンパイラの配布物に含まれています。

もしパーサを修正する予定があるならば,GNU bisonおよびflex も必要になります。 もしドキュメント類を修正するならば,Octave とともに配布されているmakeinfoプログラムに対するパッチのほか,Gnu Texinfo が必要です。

GNU Make,gcc,libstdc++,gnuplot,bison,flexおよびTexinfo は,すべて,多数の匿名ftp アーカイブから入手することができます。 主要なサイトはftp.gnu.orgですが,ここはしばしば混んでいます。 ftp.gnu.orgにあるソフトウエアをミラーするサイトの一覧は,ftp://ftp.gnu.org/pub/gnu/GNUinfo/FTPからの匿名ftp により入手できます。

もしFortran コンパイラを持っていない,あるいはお使いのFortran コンパイラが伝統的なUNIXf77 のようには動作しないならば,Fortran をC に翻訳するf2cを持っている必要があるでしょう。 多くの匿名ftp サイトからf2cを得ることができます。 f2cの最新版は,netlib.att.comからいつでも入手できます。

Linux が動作しているアイドル状態のPentium 133MHz において,何もかもをコンパイルするためには,共有ライブラリをビルドするかどうかによって,1時間半から3時間かかるでしょう。

動作には,約100 メガバイトのディスク容量が必要となります(デバッグシンボル付きでコンパイルしなければ,かなり少なくなります)。 デバッグ情報を含めないためには,単に‘make’と入力する代わりに,以下のコマンドを使用してください。

make CFLAGS=-O CXXFLAGS=-O LDFLAGS=2 もしOctave のコンパイル中にエラーに遭遇したらならば,まず最初に,問題の回避策や解決策 があるかどうかを確認するため,既知の問題点のリストをチェックしてください。 そうでなければ,バグ報告の仕方についての情報に関して,付記B [Trouble]を参照してください。

2 いちどOctave のコンパイルに成功すれば,‘make install’を実行します。

このコマンドは,Octave のコピー,そのライブラリ,およびそのドキュメントを指定したディレクトリにインストールします。 内容を分配するとき,Octave は以下のディレクトリにインストールされます。 以下の表において,prefix の初期値は‘/usr/local’であり,version はインタプリタのカレントバージョン番号を表し,arch はOctave をインストールしたコンピュータの種類(たとえば‘i586-unknown-gnu’)です。

‘prefix/bin’ 直接実行したいと考えるであろうOctave とその他のバイナリ

‘prefix/lib’ libcruft.a やliboctave.a のようなライブラリ

‘prefix/share’ アーキテクチャとは独立なデータファイル

‘prefix/include/octave’ Octave とともに配布されているインクルードファイル

‘prefix/man/man1’ Octave を解説しているUNIX 型のman page

‘prefix/info’ Octave を解説するinfo ファイル

‘prefix/share/octave/version/m’ Octave とともに配布されている関数ファイル; これにはOctave のバージョンが含まれているので,複数のバージョンのOctave を同時にインストールできます。

‘prefix/lib/octave/version/exec/arch’ ユーザではなくOctave によって実行されることになる実行プログラム

‘prefix/lib/octave/version/oct/arch’ 動的にロードされるオブジェクトファイル

‘prefix/share/octave/version/imagelib’ Octave とともに配布されている画像ファイル

C.1 インストール上の問題[編集]

この節では,Octave をインストールしている間に現れる問題(および,本当は何かが悪いわけではない問題)の一覧を掲載しています。

2 SCO システムの一部では,HAVE_TERMIOS_Hが‘config.h’内で定義されているときに,infoがコンパイルに失敗します。 ‘info/config.h’ から単に定義を取り除くことにより,コンパイルできるようになります。

2 configureがdlopen,dlsym,dlcloseおよびdlerrorを発見したが,ヘッダファイル‘dlfcn.h’を見つけられなかったとき,ヘッダファイルのソースを見つけて,それをディレクトリ‘usr/include’にインストールする必要があります。

2 ‘.oct’ファイルのビルドが動きません。

おそらくlibstdc++の共有版を使っているのでしょう。 HP-PAアーキテクチャ上でlibstdc++のバージョン2.7.2 を共有版をビルドするには,パッチが必要です。 そのパッチは,以下のURLで見つけることができます。

ftp://ftp.cygnus.com/pub/g++/libg++-2.7.2-hppa-gcc-fix2 Alpha システムの中には,libdxmlライブラリについて問題をもっているものがあります。 結果として,Octave によって呼び出される線形代数ルーチンにおいて浮動小数点エラーまたはsegmentation faults が発生します。 もしこの問題に遭遇したならば,configure スクリプトを,SPECIAL_MATH_LIBが-ldxmlをセットしないように修正すべきです。

2 FreeBSD システムでは,いくつかの内部定数を初期化している間に,Octave がハングするかもしれません。 これを修正するには,kernel configuration files(典型的には‘/sys/i386/conf’なるディレクトリにあります)において,options MATH_EMULATEのかわりに,options GPL_MATH_EMULATEを使用してください。

この変更を行った後,カーネルを再構築し,インストール後は再起動する必要があるでしょう。

2 ‘sighandlers.cc’をコンパイルしている間に,以下のエラーpassing `void (*)()' as argument 2 of`octave_set_signal_handler(int, void (*)(int))'あるいはwarning: ANSI C++ prohibits conversion from `(int)' to `(...)'に遭遇したならば,関数に関する適切なプロトタイプを追加するため,gcc のインクルードサブディレクトリにあるいくつかのファイルを編集する必要があります。 たとえば,Ultrix 4.2 は,‘signal.h’にsignal関数についての適切なプロトタイプとSIG_IGNマクロを追加する必要があります。

あるシステムでは,SIG_IGNマクロは以下のように定義されます:

  1. define SIG_IGN (void (*)())1

signal関数に対するプロトタイプ宣言にマッチするために,以下のようなすべきであるときには。

  1. define SIG_IGN (void (*)(int))1

この変更は,SIG_DFLおよびSIG_ERRシンボルについても行うべきです。さらに,‘sys/signal.h’にある定義を変更する必要があるかもしれません。

gccが一連のヘッダファイルの修正版をインストールするときには,gcc fixincludesおよびfixprotoスクリプトは,おそらく修正されるべきです。 しかし,それはまだ行われているとは思えません。

‘/usr/include’にあるファイルを変更すべきではありません。 以下のコマンドを実行することにより,gccのインクルードディレクトリツリーを見つけることができます。

gcc -print-libgcc-file-name

gccインクルードファイルのディレクトリは,通常は,‘libgcc.a’というファイルを含むディレクトリと同じところから始まります。

2 Fortran サブルーチンの中には,Sun のFortran コンパイラの旧版を使用すると,コンパイルに失敗するものがあるかもしれません。 サブディレクトリ‘libcruft’にあるFortran サブルーチンをコンパイルしているときに,以下のようなエラーが出るならば,コンパイラをアップグレードし,最適化をオフにしてコンパイルを試みるべきです。

zgemm.f:

zgemm:

warning: unexpected parent of complex expression subtree

zgemm.f, line 245: warning: unexpected parent of complex

expression subtree

warning: unexpected parent of complex expression subtree

zgemm.f, line 304: warning: unexpected parent of complex

expression subtree

warning: unexpected parent of complex expression subtree

zgemm.f, line 327: warning: unexpected parent of complex

expression subtree

pcc_binval: missing IR_CONV in complex op

make[2]: *** [zgemm.o] Error 1

2 NeXT システムにおいて,‘Array.cc’および‘Matrix.cc’をコンパイルしているときに,以下のエラーが出るならば,-gオプションをつけずにこれらファイルを再コンパイルしてください。

/usr/tmp/cc007458.s:unknown:Undefined local symbol LBB7656


/usr/tmp/cc007458.s:unknown:Undefined local symbol LBE7656

2 SunOS システムでは,shell cmd の呼び出しやページャが動作しないと報告をしてくる人々がいます。 これは明らかに,libg++をコンパイルするときに,G_HAVE_SYS_WAITを1 の代わりに0 としていることによるものです。

2 NeXT システムでは,‘libsys_s.a’をリンクすることが以下の関数をresolve することに失敗するかもしれません。

_tcgetattr

_tcsetattr

_tcflow

これらは‘libposix.a’の一部です。 不幸にも,-posixつきでOctave をリンクすることは,以下の未定義シンボルが生じます。

.destructors_used

.constructors_used

_objc_msgSend

_NXGetDefaultValue

_NXRegisterDefaults

.objc_class_name_NXStringTable

.objc_class_name_NXBundle

One kluge around this problem は,‘libposix.a’から‘termios.o’ を展開し,それをOctaveの‘src’ディレクトリに置き,makefile 中でリンクすべきファイルのリストにそれを加えることです。 この問題を解決するための方法について提案があれば歓迎します。

2 もしOctave が浮動小数点例外ですぐにクラッシュするなら,無限大とNaN に対するIEEE 浮動小数点値を初期化することに失敗しているようです。

もしお使いのシステムが,実際にはIEEE 演算をサポートしているならば,Octave の内部変数infinity とNaN を正しく初期化するために,‘lo-ieee.cc’ 内の関数octave_ieee_initを修正することにより,この問題を修正することができるでしょう。

もしお使いのシステムが,IEEE 演算をサポートしておらず,Octave のconfigure スクリプトがそれを正しく決定できていないならば,HAVE_ISINF,HAVE_FINITEおよびHAVE_ISNANを定義しないように,ファイル‘config.h’を編集することにより,この問題を解決することができます。

いずれのケースにおいても,バグとしてこれを報告してください。 なぜならば,行うべき適切なことを自動的に決定するために,Octave のconfigure スクリプトを修正することが可能かもしれないからです。

2 Octave のバイナリ配布物を別のディレクトリにインストールした後では,Emacs のrun-octaveコマンドが動作しません。 Emacs はinferior-octave-startupのaccept-process-output内でハングします。

これは,comint パッケージを使用したシェルスクリプトを実行することに関する問題であるように思われます。 シェルスクリプトについての必要性を消去するために,Octave をインストールする方法を変更することにより,この問題を回避できます。 ソース配布物を使用するとOctaveのコンパイルとインストールの両方を行うことができます。

標準のディレクトリにバイナリ配布物を再インストールしてもよいです。 あるいは,Octave のシェルスクリプトラッパにあるコマンドをシェルのスタートアップファイル(およびOctave を使用している他の人のシェルスタートアップファイル)にコピーし,ファイル‘octave.bin’を‘octave’にリネームしてもよいです。