TinySVM-0.09のshared library作成に成功
TinySVM単体での動作はOKそう。
automake&autoconfのバージョンが違うらしく、configure.inやMakefile.amをいじると「Checking how to recognise dependant libraries」で違うものが認識されてしまい、DLLが作成されない。
なので、./configureした後のMakefileを編集すると言う負けパターンになってしまった(だって面倒なんだもん)。
まあ動けばいいのだ、と言うことで以下メモ。
- ./configureする
- Makefileを以下のように編集
--- TinySVM-0.09/Makefile.org +++ TinySVM-0.09/Makefile @@ -72,6 +72,7 @@ JAVA = JAVAC = JAVAINC = -I/usr/include +LIBS = -lm -lstdc++ LIBTOOL = $(SHELL) $(top_builddir)/libtool LN_S = ln -s LTVERSION = 3:0:2
- src/Makefileを以下のように編集
--- TinySVM-0.09/src/Makefile.org +++ TinySVM-0.09/src/Makefile @@ -88,7 +88,7 @@ AUTOMAKE_OPTIONS = no-dependencies lib_LTLIBRARIES = libtinysvm.la -libtinysvm_la_SOURCES = getopt.c getopt1.c getopt.h common.h \ +libtinysvm_la_SOURCES = common.h \ param.cpp param.h \ kernel.h \ classifier.h classifier.cpp \ @@ -130,9 +130,9 @@ DEFS = -DHAVE_CONFIG_H -I. -I$(srcdir) -I.. CPPFLAGS = LDFLAGS = -LIBS = -lm -lm +LIBS = -lm -lm -lstdc++ libtinysvm_la_LIBADD = -libtinysvm_la_OBJECTS = getopt.lo getopt1.lo param.lo classifier.lo \ +libtinysvm_la_OBJECTS = param.lo classifier.lo \ q_matrix.lo base_example.lo example.lo model.lo oneclass_solver.lo \ svm_solver.lo svr_solver.lo qp_solver.lo bin_PROGRAMS = svm_learn$(EXEEXT) svm_classify$(EXEEXT) \
以下備考
- make checkはエラーなしで通る
- make installで実行ファイルが全くインストールされない(DLLを作るとそうなる?)
- automake&autoconfに関してはここが非常に参考になった
しかし、YamChaは例によってmake checkでエラーが出るのであった。どうやらTinySVMがshared libraryかそうでないかは関係ないらしい。
先は長いなあ。