バックエンドとしてキーバリューストアを使用する独自のMySQLストレージエンジンを作成しようとしています。カスタムのmysqlプラグインをロードしようとすると、未定義の参照 - デバッグ方法?
私は今、必須部分を実装した最初のバージョンを書いて、MySQLソースインスタンスをコンパイル、リンク、インストールすることができました。そうした後、私はmysqlのコンソールで次のコマンドを使用して、私の新しいプラグインをロードしよう:
install plugin ramcloud soname 'ha_ramcloud.so';
私が得るエラーは以下の通りです:
ERROR 1126 (HY000): Can't open shared library '/usr/local/mysql/lib/plugin/ha_ramcloud.so' (errno: 13 undefined symbol: _ZNSt8_Rb_treeImmSt9_IdentityImESt4lessImESaImEE8_M_eraseEPSt13_Rb_tree_nodeImE)
今、私はこれをデバッグする方法が分かりません問題。キー値ストアのクライアントライブラリは、-std = C++ 0xコンパイラフラグを使用しており、これが問題の一部である可能性があると考え始めました。しかし、lddでチェックすると、私のストレージエンジンはmysqlと一緒に提供されている他のエンジンと同じlibstdC++バージョンにリンクします。これは問題なくロードできます。
この問題の原因を特定する方法はありますか?
EDIT:見つからません記号は、これはのlibstdC++(STL)から何かのように見えるとstdの私の使用::設定から、おそらくある
std::_Rb_tree<unsigned long, unsigned long, std::_Identity<unsigned long>, std::less<unsigned long>, std::allocator<unsigned long> >::_M_erase(std::_Rb_tree_node<unsigned long>*)
です。これはどうしたらできますか?