super-smack
$ wget http://vegan.net/tony/supersmack/super-smack-1.3.tar.gz $ tar xvzf super-smack-1.3.tar.gz $ cd super-smack-1.3/ $ ./configure --with-mysql --prefix=$HOME --with-smacks-dir=$HOME/share --with-datadir=$HOME/var --with-mysql-lib=/usr/lib64/mysql/ --with-mysql-include=/usr/include/mysql
で動くかと思いきや、何カ所か手を入れる必要があった。
strlenが無い(おそらくgccが新しすぎる)って怒られる場合は、src/dictionary.hに下記を追加
#include <string.h>
また、キャストできない(おそらく64bit環境なため)って怒られる場合は、src/query.ccを修正。
--- query.cc~ 2005-04-30 22:51:29.000000000 +0900 +++ query.cc 2009-10-11 19:05:46.000000000 +0900 @@ -197,7 +197,7 @@ { string s((*i).first); int str_len = (*i).first.length(); - if((unsigned)p + str_len + 3 *sizeof(int) < (unsigned)p_end ) + if((unsigned long)p + str_len + 3 *sizeof(long) < (unsigned long)p_end ) { *p++ = (char) str_len; const char* q_type_name = s.c_str(); @@ -216,7 +216,7 @@ die(0, "report buffer overflow -- too many query types"); } - len = (unsigned)p - (unsigned)buf; + len = (unsigned long)p - (unsigned long)buf; *(buf) = num_recs; if(write(fd, buf, len) != len)
並外れて投げやりな修正だが、動いているようだ。しかし、上記のようにsizeof(void *)==sizeof(int)を仮定している場所が他にもあるようなら、あまりマトモには動かないかもしれない。
また、インストールにflexとbison(or byacc)が必要なのだが、無くてもconfigureで何も言ってくれないので注意。