From: Masahiro Sakai (=?iso-2022-jp?B?GyRCPHIwZkAvTTUbKEI=?=) Date: 2003-08-14T15:08:33+09:00 Subject: [ruby-list:38103] Re: [ANN] Ruby-GNOME2-0.6.0 さかいといいます。 From: "Akinori MUSHA" Subject: [ruby-list:38099] Re: [ANN] Ruby-GNOME2-0.6.0 Date: Thu, 14 Aug 2003 03:41:07 +0900 >  FreeBSD 4.x でビルドすると pthread のリンクエラーが出る問題が > あり、 FreeBSD GNOME Project の Joe Marcus Clarke から次のような > 報告とパッチが送られてきました。 > >  (ほかの環境でも)問題ないようであれば取り込んでいただけますか? > よろしくお願いします。 > > At Tue, 12 Aug 2003 00:02:44 -0400, > Joe Marcus Clarke wrote: > > I was trying to update ruby-gnome2 on my -STABLE machine, and found it > > couldn't resolve pthread symbols. Looks like the Ruby configurator is > > only getting the -l libraries when -STABLE requires -pthread as well. > > The attached patch solved the problem for me. Thanks! Ruby 1.8.0 の mkmf.rb に合わせて、 --libs-only-l と --libs-only-L を使うようにしたのですが、 -pthread などのフラグの事をすっかり忘れていました。 > --- ../glib/src/lib/mkmf-gnome2.rb.orig Mon Aug 11 23:50:06 2003 > +++ ../glib/src/lib/mkmf-gnome2.rb Mon Aug 11 23:50:08 2003 > @@ -42,7 +42,7 @@ > STDOUT.flush > if exists? pkg > STDOUT.print "yes\n" > - $libs += ' ' + libs_only_l(pkg) > + $libs += ' ' + libs(pkg) > $LDFLAGS += ' ' + libs_only_L(pkg) > $CFLAGS += ' ' + cflags(pkg) > true このパッチだと -L が $libs と $LDFLAGS の両方に入ってしまうので、 $LDFLAGS に libs_only_L(pkg) を追加しないようにするか、 あるいは以下のようなパッチの方が良いと思います。 Index: glib/src/lib/mkmf-gnome2.rb =================================================================== RCS file: /cvsroot/ruby-gnome2/ruby-gnome2/glib/src/lib/mkmf-gnome2.rb,v retrieving revision 1.5 diff -u -p -r1.5 mkmf-gnome2.rb --- glib/src/lib/mkmf-gnome2.rb 2 Aug 2003 14:44:59 -0000 1.5 +++ glib/src/lib/mkmf-gnome2.rb 14 Aug 2003 05:36:24 -0000 @@ -27,6 +27,11 @@ module PKGConfig end module_function :libs_only_l + def libs_only_other(pkg) + `#{@@cmd} --libs-only-other #{pkg}`.chomp + end + module_function :libs_only_other + def cflags(pkg) `#{@@cmd} --cflags #{pkg}`.chomp end @@ -43,7 +48,7 @@ module PKGConfig if exists? pkg STDOUT.print "yes\n" $libs += ' ' + libs_only_l(pkg) - $LDFLAGS += ' ' + libs_only_L(pkg) + $LDFLAGS += ' ' + libs_only_other(pkg) + ' ' + libs_only_L(pkg) $CFLAGS += ' ' + cflags(pkg) true else -- 酒井 政裕 / Masahiro Sakai