NAL研卒業研究ノート

トップページ| ログイン| RSS| コメントRSS|

詳細表示

piga

日付 2011 01 26
場所 712
開始時刻 1月 26, 2011, 11:05 p.m.
終了時刻 1月 26, 2011, 11:05 p.m.
時間 3 時間 0 分
タイトル libsvm-ruby インストール(できた
内容 Mac OS X (snow leopard) への
libsvm, libsvm-ruby のインストールまとめ

まず libsvm は macports を使ってインストール
http://www.macports.org/install.php

$ sudo port install libsvm

Password:
---> Computing dependencies for libsvm
---> Fetching libsvm
---> Attempting to fetch libsvm-3.0.tar.gz from http://www.csie.ntu.edu.tw/~cjlin/libsvm/
---> Verifying checksum(s) for libsvm
---> Extracting libsvm
---> Applying patches to libsvm
---> Configuring libsvm
---> Building libsvm
---> Staging libsvm into destroot
---> Installing libsvm @3.0_0+java
---> Activating libsvm @3.0_0+java
---> Cleaning libsvm


次に、libsvm-ruby。
以下からダウンロード。展開してそのフォルダまで移動。
http://debian.cilibrar.com/debian/pool/main/libs/libsvm-ruby/

以下のサイトを参考に、svm.h をあるべき場所へ。
http://efreedom.com/Question/1-2189589/Get-Ruby-Svm-Look-Libraries-Macports-Opt-Local
$ sudo mkdir /opt/local/include/libsvm

$ sudo cp /opt/local/include/svm.h /opt/local/include/libsvm/


ここで./configure, makeすると obstack.h がないと言われるので、探してコピーしてくる。
$ sudo find / -name "obstack.h"

/opt/local/var/macports/sources/rsync.macports.org/release/ports/sysutils/anacron/files/obstack.h
$ sudo cp /opt/local/var/macports/sources/rsync.macports.org/release/ports/sysutils/anacron/files/obstack.h /opt/local/lib/


ここからが前回までとは違うところ。

obstack.h と obstack.c を libsvm-ruby のMakefileがあるところ(ここでは現在のカレントディレクトリ)にコピーしてくる。
$ cp /opt/local/var/macports/sources/rsync.macports.org/release/ports/sysutils/anacron/files/obstack.h .

$ cp /opt/local/var/macports/sources/rsync.macports.org/release/ports/sysutils/anacron/files/obstack.c .


svm.h と svm.cpp も必要なので、
macports で libsvm を入れたが、以下から libsvm のソースをダウンロードしてくる。
http://www.csie.ntu.edu.tw/~cjlin/libsvm/

svm.cpp は Makefileのある場所へ。
svm.h はパスの通った場所へ。
$ cp ../libsvm-3.0/svm.cpp .

$ sudo cp ../libsvm-3.0/svm.h /usr/include/.


これでファイルの下準備は完了。
configureしてmakefileを生成。
$ CPPFLAGS=-I/opt/local/include LIBS=-L/opt/local/lib ./configure


Makefile を編集。以下の項目が以下の通りになっていれば良いはず。
ldflags = -L. -arch x86_64 -lstdc++
SRCS = obstack.c main.cpp svm.cpp
OBJS = obstack.o main.o svm.o

main.cpp を編集。svm_model はヘッダファイルで宣言されているので
ここではコメントアウトする。
584: /* To be removed in next version */

585: /*struct svm_model
586: {
中略
602: }*/


あとは make, make install するだけ。
$ make

g++ -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0 -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -fno-common -Wall -O3 -DHAVE_DEFINE_ALLOC_FUNCTION -c main.cpp
main.cpp:526: warning: ‘VALUE svmpm_init(VALUE)’ defined but not used
main.cpp:534: warning: ‘VALUE svmpa_init(VALUE)’ defined but not used
g++ -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0 -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -fno-common -Wall -O3 -DHAVE_DEFINE_ALLOC_FUNCTION -c svm.cpp
cc -arch x86_64 -pipe -bundle -undefined dynamic_lookup -o SVM.bundle obstack.o main.o svm.o -L. -L/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib -L. -arch x86_64 -lstdc++ -lruby -lpthread -ldl
$ make install
/usr/bin/install -c -m 0755 SVM.bundle /Library/Ruby/Site/1.8/universal-darwin10.0


サンプルプログラムを実行(長いので省略)→warningは出るけど動いた!

ということで、ひとまず libsvm-ruby は完了。
タグ libsvm libsvm-ruby

コメント

比嘉勇人のノート一覧