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. いいのかなー