rubyが落ちる。
1.9.2ブランチを使ってるんだけど、終了時にランタイムエラーで落ちる。でも普通のスクリプトを実行してもmake testしてもそんなことはない。俺の拡張ライブラリが悪いのかな。
gdbで実行してもひっかからない場所で落ちてるようなのでタチがわるい。終了時だけなんで気にしないっつー手もなくはないんだけどさすがに気持ち悪いしなー。
ベクトルとか行列とかぐらいしか入ってないrikomathのテストを動かしても落ちるってことはOpenGLとかDirectXがどうとかいう話でもないようだ。以前は落ちてなかったので思い当たるのはMinGW gccのバージョンか。さらに言うと俺の拡張ライブラリにあって標準の拡張ライブラリにないものはC++、つまりg++が怪しい。
あー、ただ読み込まれるだけの拡張ライブラリをC++で書いたらやっぱり落ちた。g++でリンクするとまずいようだ。
MinGW gccのリリースノートにlibgccとかlibstdc++なんかが動的リンクされるから都合悪い時は静的リンクにしろよとか書いてあったのを思い出したんだけどこれじゃねぇかなぁ。
$LDFLAGS += ' -static-libgcc'
をextconf.rbに書いてやったら何もしないC++拡張ライブラリが落ちなくなった。よかったこれだ。
libstdc++もダイナミックリンクされんぞとか書いてあるけどこっちはべつにstaticじゃなくても問題ないな。Cだとlibgccが標準で静的リンクらしいのでその辺のミスマッチなのかね。libstdc++もstaticにしとくかな。
しかしこれをextconf.rbに書くのもおかしいからrubyのconfigureする時から指定しておくのがいいんだろうなぁ。またrubyのビルドか。Atomマシンだとだいぶ時間かかるんだよね。
おっと、LDFLAGSに-static-libstdc++を指定したらさすがにgccにUnrecognize optionていわれまくる。うーん、まあ言われてるだけで通ってるからいいかな。
ところで拡張ライブラリにC++なソースを入れておくとg++でリンクしてくれるようにいつのまにかなってたんですね。以前はgccでリンクしようとしてくれてたんでgccの時はわざわざlibstdc++をリンクするように指定してたんだけどいらなくなった。mkmfはしれっと変わりまくるのでおそろしい。
OpenGLデバッガ兼プロファイラのgDEBuggerさんがデスクトップOS向けは無料になったようです。
まだ無料版は出来てないんだけどそれまではライセンスファイル置いとくから使ってねとかなんとか。opengl.orgのコメントにもあるけどビジネスモデルが変わったって、どうなるんだろうな。あとWindows、Linux、MacOSX向けは無料になりますとか書いてあるけどモバイル版はどうなんだろ。モバイル版を売る会社になるのかな。
ともあれ、OpenGLをいじるならあるととても嬉しいけど7万円以上もして手が出なかったgDEBuggerが手に入るのは非常にうれしいところ。でもこれ商用利用はどうなんかね。
MacだったらOpenGL ProfilerがあるからべつにいらなかったんだけどWindowsでは是非とも入れておきたい。
無料ライセンスの使い方はWindowsでは、
こんな感じでした。
なんかOpenGL ESのデバッグもできるみたいなので試そうとしたら、こっちは別ライセンスだった。バイナリは同一でライセンスが別なのね。
そのかわりOpenCLのデバッグはできそうだったよ。デバッグ対象がないからできなかったけど…。