小宮です。

拡張ライブラリから ruby のオブジェクトを mark したいのですが、使う
べき API は rb_gc_mark() でよいのでしょうか?

だとしたら、g++ -pedantic とかでもコンパイルが通るように 
intern.h のプロトタイプを void rb_gc_mark(VALUE*) なり 
void rb_gc_mark(void*) なりに変えていただけないでしょうか。
void rb_gc_mark() だと引数を渡そうとすると弾かれてしまいます。

----
小宮 健一