きしもとです。FreeBSD 8.3-STABLE を使っています。 以下のような、アプリのビルドに失敗する現象を確認しました。 もう少し煮詰めたあとで send-pr する予定ですが、他にお困りの方も いるかもしれないと思い投稿します。
まず、以下のようにして gcc を実行すると、異常終了します。 % touch hoge.c % gcc -Wmissing-include-dirs -I/no/such/dir hoge.c cc1: internal compiler error: Segmentation fault: 11 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. -Wmissing-include-dirs を付けるのをやめるか、存在しない ディレクトリを -I オプションで指定しなければ回避できますので、 深刻な問題ではありません。 これは既知の問題で、 http://docs.freebsd.org/cgi/getmsg.cgi?fetch=120904+0+archive/2008/freebsd-current/20081026.freebsd-current にありますように、修正する差分は GPL3 下にある、という状態に なっています。 次に GTK+ 2.0 についてですが、FreeBSD の ports の GTK+ 2.0 ( x11-toolkits/gtk20 ) では patch-ak で $(libdir)/gtk-2.0/include というディレクトリは作らず使わず、$(prefix)/include/gtk-2.0 にヘッダファイルの置き場所を一本化するよう、パッチが当てられて います。 しかし、GTK+ 中に含まれる GDK の pkgconf 設定ファイルである gdk-2.0.pc ないし gdk-x11-2.0.pc の中で Cflags: -I${includedir}/gtk-2.0 -I${libdir}/gtk-2.0/include のように指定されるのがそのままであるため、GDK2(を含むGTK+2)の アプリケーションをビルドする際、pkg-config --cflags gdk-2.0 でコンパイルオプションを得ていると、存在しないディレクトリを 指定してしまうことになります。 この時 -Wmissing-include-dirs も指定されていると、前述した gcc の 異常終了を発生させます。問題が起きるものとして、ruby-gnome2 の バージョン 1.1.0 以降( ports ではバージョン 1.0.3 から上げられて いないので顕在化していません)でビルドできなくなっています。 特に extconf.rb によるコンフィギュレーション( configure スクリプトの実行に相当)中に、gcc のクラッシュがコンパイル失敗の 扱いになるので、まともに config ができていないのですが、その場では ビルドの失敗にならないため、原因を突き止めるまで手間取りました。