2009年8月20日木曜日

MinGWを使ったRuby/GTK2のコンパイルが上手くいかない件

Windowsでも最新のRuby/GTK2を使用できるようにしようと、MinGWを使用したコンパイルに何度も挑戦しているが、どうしても上手くいかない。

gtk2.soを作るところで、ld.exe: cannot find -lruby-gtk2となり、コケてしまう。

環境は、
Windows 7 RC x64
MSYS 1.0.11(32bit)
MinGW 5.1.4(32bit)
Rubyソースruby-1.8.7-p174.tar.gzをmake、D:/RubyGTKにインストール。
GTKバイナリgtk+-bundle_2.16.4-20090708_win32.zipをMSYSの/に展開。
Ruby/GTK2ソースruby-gtk2-0.19.1.tar.gzをmake。


hatsune@HATSUNE-SERVER ~/RubyGTK/ruby-gtk2-0.19.1
$ make
make[1]: Entering directory `/home/hatsune/RubyGTK/ruby-gtk2-0.19.1/glib'
make[2]: Entering directory `/home/hatsune/RubyGTK/ruby-gtk2-0.19.1/glib/src'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/hatsune/RubyGTK/ruby-gtk2-0.19.1/glib/src'
make[1]: Leaving directory `/home/hatsune/RubyGTK/ruby-gtk2-0.19.1/glib'
make[1]: Entering directory `/home/hatsune/RubyGTK/ruby-gtk2-0.19.1/gdkpixbuf'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/hatsune/RubyGTK/ruby-gtk2-0.19.1/gdkpixbuf'
make[1]: Entering directory `/home/hatsune/RubyGTK/ruby-gtk2-0.19.1/pango'
make[2]: Entering directory `/home/hatsune/RubyGTK/ruby-gtk2-0.19.1/pango/src'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/hatsune/RubyGTK/ruby-gtk2-0.19.1/pango/src'
make[1]: Leaving directory `/home/hatsune/RubyGTK/ruby-gtk2-0.19.1/pango'
make[1]: Entering directory `/home/hatsune/RubyGTK/ruby-gtk2-0.19.1/atk'
make[2]: Entering directory `/home/hatsune/RubyGTK/ruby-gtk2-0.19.1/atk/src'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/hatsune/RubyGTK/ruby-gtk2-0.19.1/atk/src'
make[1]: Leaving directory `/home/hatsune/RubyGTK/ruby-gtk2-0.19.1/atk'
make[1]: Entering directory `/home/hatsune/RubyGTK/ruby-gtk2-0.19.1/gtk'
make[2]: Entering directory `/home/hatsune/RubyGTK/ruby-gtk2-0.19.1/gtk/src'
gcc -shared -s -o gtk2.so init.o rbgdk.o rbgdkatom.o rbgdkcairo.o rbgdkcolor.o rbgdkcolormap.o rbgdkconst.o rbgdkcursor.o rbgdkdevice.o rbgdkdisplay.o rbgdkdisplaymanager.o rbgdkdragcontext.o rbgdkdraw.o rbgdkevent.o rbgdkgc.o rbgdkgeometry.o rbgdkimage.o rbgdkinput.o rbgdkkeymap.o rbgdkkeyval.o rbgdkpango.o rbgdkpangorenderer.o rbgdkpixbuf.o rbgdkpixmap.o rbgdkproperty.o rbgdkrectangle.o rbgdkregion.o rbgdkrgb.o rbgdkscreen.o rbgdkselection.o rbgdkthreads.o rbgdktimecoord.o rbgdkvisual.o rbgdkwindow.o rbgdkwindowattr.o rbgdkx11.o rbgtk.o rbgtkaboutdialog.o rbgtkaccelerator.o rbgtkaccelgroup.o rbgtkaccelgroupentry.o rbgtkaccelkey.o rbgtkaccellabel.o rbgtkaccelmap.o rbgtkaccessible.o rbgtkaction.o rbgtkactiongroup.o rbgtkadjustment.o rbgtkalignment.o rbgtkallocation.o rbgtkarrow.o rbgtkaspectframe.o rbgtkassistant.o rbgtkbbox.o rbgtkbin.o rbgtkbindingset.o rbgtkborder.o rbgtkbox.o rbgtkbuildable.o rbgtkbuilder.o rbgtkbutton.o rbgtkcalendar.o rbgtkcelleditable.o rbgtkcelllayout.o rbgtkcellrenderer.o rbgtkcellrendereraccel.o rbgtkcellrenderercombo.o rbgtkcellrendererpixbuf.o rbgtkcellrendererprogress.o rbgtkcellrendererspin.o rbgtkcellrenderertext.o rbgtkcellrenderertoggle.o rbgtkcellview.o rbgtkcheckbutton.o rbgtkcheckmenuitem.o rbgtkclipboard.o rbgtkcolorbutton.o rbgtkcolorsel.o rbgtkcolorselectiondialog.o rbgtkcombo.o rbgtkcombobox.o rbgtkcomboboxentry.o rbgtkconst.o rbgtkcontainer.o rbgtkcurve.o rbgtkdialog.o rbgtkdrag.o rbgtkdrawingarea.o rbgtkeditable.o rbgtkentry.o rbgtkentrycompletion.o rbgtkeventbox.o rbgtkexpander.o rbgtkfilechooser.o rbgtkfilechooserbutton.o rbgtkfilechooserdialog.o rbgtkfilechooserwidget.o rbgtkfilefilter.o rbgtkfilesel.o rbgtkfixed.o rbgtkfontbutton.o rbgtkfontselection.o rbgtkfontselectiondialog.o rbgtkframe.o rbgtkgamma.o rbgtkhandlebox.o rbgtkhbbox.o rbgtkhbox.o rbgtkhpaned.o rbgtkhruler.o rbgtkhscale.o rbgtkhscrollbar.o rbgtkhseparator.o rbgtkiconfactory.orbgtkiconinfo.o rbgtkiconset.o rbgtkiconsize.o rbgtkiconsource.o rbgtkicontheme.o rbgtkiconview.o rbgtkimage.o rbgtkimagemenuitem.o rbgtkimcontext.o rbgtkimcontextsimple.o rbgtkimmulticontext.o rbgtkinits.o rbgtkinputdialog.o rbgtkinvisible.o rbgtkitem.o rbgtkitemfactory.o rbgtklabel.o rbgtklayout.o rbgtklinkbutton.o rbgtkliststore.o rbgtkmain.o rbgtkmenu.orbgtkmenubar.o rbgtkmenuitem.o rbgtkmenushell.o rbgtkmenutoolbutton.o rbgtkmessagedialog.o rbgtkmisc.o rbgtknotebook.o rbgtkobject.o rbgtkoptionmenu.o rbgtkpagesetup.o rbgtkpagesetupunixdialog.o rbgtkpaned.o rbgtkpapersize.o rbgtkplug.o rbgtkprintcontext.o rbgtkprinter.o rbgtkprintjob.o rbgtkprintoperation.o rbgtkprintoperationpreview.o rbgtkprintsettings.orbgtkprintunixdialog.o rbgtkprogress.o rbgtkprogressbar.o rbgtkradioaction.o rbgtkradiobutton.o rbgtkradiomenuitem.o rbgtkradiotoolbutton.o rbgtkrange.o rbgtkrc.o rbgtkrcstyle.o rbgtkrecentaction.o rbgtkrecentchooser.o rbgtkrecentchooserdialog.o rbgtkrecentchoosermenu.o rbgtkrecentchooserwidget.o rbgtkrecentdata.o rbgtkrecentfilter.o rbgtkrecentfilterinfo.orbgtkrecentinfo.o rbgtkrecentmanager.o rbgtkruler.o rbgtkscale.o rbgtkscalebutton.o rbgtkscrollbar.o rbgtkscrolledwindow.o rbgtkselection.o rbgtkselectiondata.o rbgtkseparator.o rbgtkseparatormenuitem.o rbgtkseparatortoolitem.o rbgtksettings.o rbgtksizegroup.o rbgtksocket.o rbgtkspinbutton.o rbgtkstatusbar.o rbgtkstatusicon.o rbgtkstock.o rbgtkstyle.o rbgtktable.o rbgtktargetlist.o rbgtktearoffmenuitem.o rbgtktextappearance.o rbgtktextattributes.o rbgtktextbuffer.o rbgtktextchild.o rbgtktextiter.o rbgtktextmark.o rbgtktexttag.o rbgtktexttagtable.o rbgtktextview.o rbgtktoggleaction.o rbgtktogglebutton.o rbgtktoggletoolbutton.o rbgtktoolbar.o rbgtktoolbutton.o rbgtktoolitem.o rbgtktooltip.o rbgtktooltips.o rbgtktreedragdest.o rbgtktreedragsource.o rbgtktreeiter.o rbgtktreemodel.o rbgtktreemodelfilter.o rbgtktreemodelsort.o rbgtktreepath.o rbgtktreerowreference.o rbgtktreeselection.o rbgtktreesortable.o rbgtktreestore.o rbgtktreeview.o rbgtktreeviewcolumn.o rbgtkuimanager.o rbgtkvbbox.o rbgtkvbox.o rbgtkviewport.o rbgtkvolumebutton.o rbgtkvpaned.o rbgtkvruler.o rbgtkvscale.o rbgtkvscrollbar.o rbgtkvseparator.o rbgtkwidget.o rbgtkwindow.o rbgtkwindowgroup.o -L. -Ld:/RubyGTK/lib -L. -LD:/MSYS32/lib -LD:/MSYS32/lib -LD:/MSYS32/lib -LD:/MSYS32/home/hatsune/RubyGTK/ruby-gtk2-0.19.1/glib/src -LD:/MSYS32/home/hatsune/RubyGTK/ruby-gtk2-0.19.1/glib/src -LD:/MSYS32/home/hatsune/RubyGTK/ruby-gtk2-0.19.1/pango/src -LD:/MSYS32/home/hatsune/RubyGTK/ruby-gtk2-0.19.1/pango/src -LD:/MSYS32/home/hatsune/RubyGTK/ruby-gtk2-0.19.1/gtk/src -LD:/MSYS32/home/hatsune/RubyGTK/ruby-gtk2-0.19.1/gtk/src -Wl,--enable-auto-image-base,--enable-auto-import,--export-all,--out-implib=libruby-gtk2.a -lmsvcrt-ruby18 -lgthread-2.0 -lglib-2.0 -lintl -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -lcairo -lruby-glib2 -lruby-glib2 -lruby-pango -lruby-pango -lruby-gtk2 -lruby-gtk2 -lshell32 -lws2_32
D:\MinGW32\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot find -lruby-gtk2
collect2: ld returned 1 exit status
make[2]: *** [gtk2.so] Error 1
make[2]: Leaving directory `/home/hatsune/RubyGTK/ruby-gtk2-0.19.1/gtk/src'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/hatsune/RubyGTK/ruby-gtk2-0.19.1/gtk'

-----
SUCCEEDED: glib gdkpixbuf pango atk
FAILED: gtk
-----
Done.



…gtk以外はコンパイル出来るのだが…
…諦めようか…(ヽ´ω`)

3 件のコメント:

kenhys さんのコメント...

gtk2を今まさにビルドしようとしているのにも関わらず(なぜか-lruby-gtk2が指定されているので)ビルド済みのruby-gtk2をリンクしようとしているだけのように見えます。
Makefileから-lruby-gtk2を削除すると良いのではないでしょうか。

Le Fay さんのコメント...

近いうちに試してみようと思います。
今は自宅のWindows触れないので…

makeをよく理解しないままでいるのが問題なんでしょうね…。

Le Fay さんのコメント...

ruby-gtk2-0.19.3/gtk/src/Makefileの
LIBS = $(LIBRUBYARG_SHARED)行、
-lruby-gtk2 -lruby-gtk2
を削除、再makeしたら、問題無くビルド出来ました。

今のところ、問題無く動いています。
ありがとうございました。