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かそうでないかは関係ないらしい。
先は長いなあ。