GCC で RTTI つきのライブラリと RTTI なしのライブラリを結合する
ぶっちゃけ MySQL (-fno-rtti) のプラガブルストレージエンジン Q4M で boost::spirit (RTTI 必須) を使いたいという話なんですが。
ストレージエンジン全体を「-fno-rtti」をつけずに make すると、プラガブルストレージエンジンのロード時に、親クラス側のシンボルが見つからないと起こられる。たぶん typeinfo 関連の情報が MySQL 側にないのが原因。
なので、non-virtual なクラスをブリッジクラスとして、boost::spirit と結合する。
g++ -fPIC -c compiler_using_spirit.cc g++ -fPIC -fno-rtti -c ha_engine.cc g++ -shared -o libengine.so compiler_using_spirit.o ha_engine.o
nasty hack. いいのかなー