naoki iimura
amatu****@users*****
2007年 2月 26日 (月) 18:57:37 JST
こんばんは、いいむらです。 Mac OS X 10.3.9(gcc 3.3)でも同じところでエラーが出ています。 gcc のバージョンは gcc (GCC) 3.3 20030304 (Apple Computer, Inc. build 1671) です。 エラーの内容は、 tokenizer.cpp: In member function `bool MeCab::TokenizerImpl<N, P>::open(const MeCab::Param&)': tokenizer.cpp:104: error: parse error before `>' token tokenizer.cpp:123: error: parse error before `>' token tokenizer.cpp:167: error: parse error before `>' token tokenizer.cpp:167: error: parse error before `)' token tokenizer.cpp:169: error: parse error before `>' token tokenizer.cpp:176: error: parse error before `>' token make[2]: *** [tokenizer.lo] Error 1 make[1]: *** [all-recursive] Error 1 make: *** [all-recursive-am] Error 2 です。 あれこれ調べてみましたら、 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=795 というバグ情報に行き当たりました。 試しに、エラーの出ている 5 カ所をここに書かれているように変更してみた ところ、無事コンパイルに成功しました。 このバグは gcc 3.4 で修正されているようですので、3.4 以降では問題ない のだと思います。また、3.4 以降でもそのまま動きます。 変更内容は以下の通りです。 *** mecab-0.94/src/tokenizer.cpp-original Sat Feb 24 18:58:39 2007 --- mecab-0.94/src/tokenizer.cpp Mon Feb 26 18:18:24 2007 *************** *** 101,107 **** bool TokenizerImpl<N, P>::open(const Param ¶m) { close(); ! std::string prefix = param.get<std::string>("dicdir"); CHECK_CLOSE_FALSE(unkdic_.open(create_filename (prefix, UNK_DIC_FILE).c_str())) --- 101,107 ---- bool TokenizerImpl<N, P>::open(const Param ¶m) { close(); ! std::string prefix = param.template get<std::string>("dicdir"); CHECK_CLOSE_FALSE(unkdic_.open(create_filename (prefix, UNK_DIC_FILE).c_str())) *************** *** 120,126 **** property_.set_charset(sysdic->charset()); dic_.push_back(sysdic); ! std::string userdic = param.get<std::string>("userdic"); if (!userdic.empty()) { char buf[BUF_SIZE]; char *_dic[BUF_SIZE]; --- 120,126 ---- property_.set_charset(sysdic->charset()); dic_.push_back(sysdic); ! std::string userdic = param.template get<std::string>("userdic"); if (!userdic.empty()) { char buf[BUF_SIZE]; char *_dic[BUF_SIZE]; *************** *** 164,179 **** space_ = property_.getCharInfo(0x20); // ad-hoc ! bos_feature_.reset_string(param.get<std::string>("bos-feature")); ! std::string tmp = param.get<std::string>("unk-feature"); unk_feature_.reset(0); if (!tmp.empty()) unk_feature_.reset_string(tmp); CHECK_CLOSE_FALSE(*bos_feature_ != '\0') << "bos-feature is undefined in dicrc"; ! max_grouping_size_ = param.get<size_t>("max-grouping-size"); if (max_grouping_size_ == 0) max_grouping_size_ = DEFAULT_MAX_GROUPING_SIZE; --- 164,179 ---- space_ = property_.getCharInfo(0x20); // ad-hoc ! bos_feature_.reset_string(param.template get<std::string>("bos-feature")); ! std::string tmp = param.template get<std::string>("unk-feature"); unk_feature_.reset(0); if (!tmp.empty()) unk_feature_.reset_string(tmp); CHECK_CLOSE_FALSE(*bos_feature_ != '\0') << "bos-feature is undefined in dicrc"; ! max_grouping_size_ = param.template get<size_t>("max-grouping-size"); if (max_grouping_size_ == 0) max_grouping_size_ = DEFAULT_MAX_GROUPING_SIZE; 以上です。 -- naoki iimura (amatubu) e-mail: amatu****@mac***** web: http://amatubu.skr.jp/ diary: http://d.hatena.ne.jp/amatubu/ fingerprint: 1435 5892 86B7 D465 6DBF DFD2 71E1 1AB3 F63F DF62