CentOS 5.5 で KyotoCabinet を wget して configure && make すると、
下記のようなエラーでビルドできない現象が起こる。
kcplantdb.h:868: error: array bound is not an integer constant kcplantdb.h: In constructor ‘kyotocabinet::PlantDB<BASEDB, DBTYPE>::Cursor::Cursor(kyotocabinet::PlantDB<BASEDB, DBTYPE>*)’: kcplantdb.h:84: error: class ‘kyotocabinet::PlantDB<BASEDB, DBTYPE>::Cursor’ does not have any field named ‘stack_’ kcplantdb.h: In member function ‘void kyotocabinet::PlantDB<BASEDB, DBTYPE>::Cursor::clear_position()’: kcplantdb.h:323: error: ‘stack_’ was not declared in this scope kcplantdb.h: In member function ‘void kyotocabinet::PlantDB<BASEDB, DBTYPE>::Cursor::set_position(const char*, size_t, int64_t)’: kcplantdb.h:335: error: ‘stack_’ was not declared in this scope make: *** [kcplantdb.o] エラー 1
これが割と問題っていうか通らないんだから作れないって話でして。
んで、しょうがないのでパッチ作った。
https://gist.github.com/6be9dabc34cdb2bdbf09
原因はパッチの変更点を見てもらえれば分かると思うんですが、
class Cursor : public BasicDB::Cursor //! これより先に
static const size_t RECBUFSIZ = 64; //! これが宣言されてないと NG 食らう
という「えーそれ gcc が古いからじゃねーの」みたいなやつ。
ちなみに gcc --version するとこんな感じ。
gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-48)
2008とか(笑)
これ 5.3 の頃から upgrade で 5.5 まで来たから、
どっかおかしくなったんじゃねーの‥‥?
【23日追記】
パッチ適用して srpm 作ったよ。
・KyotoCabinet 1.2.45
・KyotoTycoon 0.9.35
これ 5.3 の頃から upgrade で 5.5 まで来たから、
どっかおかしくなったんじゃねーの‥‥?
【23日追記】
パッチ適用して srpm 作ったよ。
・KyotoCabinet 1.2.45
・KyotoTycoon 0.9.35