きしもとです。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 ができていないのですが、その場では
ビルドの失敗にならないため、原因を突き止めるまで手間取りました。

メールによる返信