如何用JRuby安装GTK2

时间:2012-09-21 06:22:06

标签: ruby jruby

当我试图在Jruby中安装GTk2 gem时,有没有人可以帮我解决这个问题?

Check http://kenai.com/projects/jruby/pages/Home for alternatives.

checking for -Wall option to compiler... no

checking for -Waggregate-return option to compiler... no

checking for -Wcast-align option to compiler... no


checking for -Wextra option to compiler... no

checking for -Wformat=2 option to compiler... no

checking for -Winit-self option to compiler... no

checking for -Wlarger-than-65500 option to compiler... no

checking for -Wmissing-declarations option to compiler... no

checking for -Wmissing-format-attribute option to compiler... no

checking for -Wmissing-include-dirs option to compiler... no

checking for -Wmissing-noreturn option to compiler... no

checking for -Wmissing-prototypes option to compiler... no

checking for -Wnested-externs option to compiler... no

checking for -Wold-style-definition option to compiler... no

checking for -Wpacked option to compiler... no

checking for -Wp,-D_FORTIFY_SOURCE=2 option to compiler... no

checking for -Wpointer-arith option to compiler... no

checking for -Wswitch-default option to compiler... no

checking for -Wswitch-enum option to compiler... no

checking for -Wundef option to compiler... no

checking for -Wunsafe-loop-optimizations option to compiler... no

checking for -Wwrite-strings option to compiler... no

checking for rb_define_alloc_func() in ruby.h... IOError: Cannot run program "cc" (in directory "C:\jruby-1.6.8\lib\ruby\gems\1.8\gems\glib2-1.1.5\ext\glib2"):
CreateProcess error=2, The system cannot find the file specified

            popen at org/jruby/RubyIO.java:3613

           xpopen at C:/jruby-1.6.8/lib/ruby/site_ruby/shared/mkmf.rb:323

             open at C:/jruby-1.6.8/lib/ruby/site_ruby/shared/mkmf.rb:260

           xpopen at C:/jruby-1.6.8/lib/ruby/site_ruby/shared/mkmf.rb:316

        egrep_cpp at C:/jruby-1.6.8/lib/ruby/site_ruby/shared/mkmf.rb:538

        have_func at C:/jruby-1.6.8/lib/ruby/site_ruby/shared/mkmf.rb:758

     checking_for at C:/jruby-1.6.8/lib/ruby/site_ruby/shared/mkmf.rb:652

         postpone at C:/jruby-1.6.8/lib/ruby/site_ruby/shared/mkmf.rb:286

             open at C:/jruby-1.6.8/lib/ruby/site_ruby/shared/mkmf.rb:260

         postpone at C:/jruby-1.6.8/lib/ruby/site_ruby/shared/mkmf.rb:286

             open at C:/jruby-1.6.8/lib/ruby/site_ruby/shared/mkmf.rb:260

         postpone at C:/jruby-1.6.8/lib/ruby/site_ruby/shared/mkmf.rb:282

     checking_for at C:/jruby-1.6.8/lib/ruby/site_ruby/shared/mkmf.rb:651

        have_func at C:/jruby-1.6.8/lib/ruby/site_ruby/shared/mkmf.rb:755

  check_ruby_func at C:/jruby-1.6.8/lib/ruby/gems/1.8/gems/glib2-1.1.5/lib/mkmf-gnome2.rb:369

           (root) at C:/jruby-1.6.8/lib/ruby/gems/1.8/gems/glib2-1.1.5/lib/mkmf-
gnome2.rb:558

          require at org/jruby/RubyKernel.java:1062

           (root) at extconf.rb:15
*** extconf.rb failed ***

Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers.  Check the mkmf.log file for more details.  You may need configuration options.


Provided configuration options:

        --with-opt-dir

        --without-opt-dir

        --with-opt-include

        --without-opt-include=${opt-dir}/include

        --with-opt-lib

        --without-opt-lib=${opt-dir}/lib

        --with-make-prog

        --without-make-prog

        --srcdir=.

        --curdir

        --ruby=C:/jruby-1.6.8/bin/jruby    

Gem files will remain installed in C:/jruby-1.6.8/lib/ruby/gems/1.8/gems/glib2-1.1.5 for inspection.

Results logged to C:/jruby-1.6.8/lib/ruby/gems/1.8/gems/glib2-1.1.5/ext/glib2/gem_make.out

我被这个问题毁了......实际上我想在ruby中运行Real多线程...我已经编写了一个在ruby中使用GTk的应用程序......现在我想将该应用程序移植到JRuby。 ....

请帮助我......任何人在>>之前都做错了吗? 提前致谢

2 个答案:

答案 0 :(得分:1)

这里的错误是你要么没有安装C编译器,要么就是找不到它

  

IOError:无法运行程序“cc”

所以看起来GTK正在尝试构建原生扩展,这在Jruby中得不到很好的支持。这篇博客文章讨论了他编写的一些代码,用于使用来自Jruby https://wordpress.kaspernj.org/?p=85

的gtk +

由于您正在移植到Jruby,您也可以直接使用Java GTK或直接使用SWT。 SWT https://github.com/danlucraft/swt有一个宝石,其中包括一些简单的例子,不知道它有多完整。

作为旁注,Redcar Editor是用Jruby + SWT编写的

答案 1 :(得分:1)

你可以试试Gtk3的FFI绑定。我自己使用过普通的Ruby和JRuby。宝石名为“gir_ffi”和“gir_ffi-gtk”。

然而,你知道,目前在MRI Ruby下存在一些线程问题,你必须自己解决这个问题,就像我在这里做的那样:

https://github.com/kaspernj/gtk3assist/blob/master/lib/gtk3assist_threadding.rb

此库基本上是直接从C库中提取的,因此比普通的Ruby GTK库复杂得多。我试图让它变得更简单,但要使其像Ruby GTK2库一样简单易行,还有很长的路要走:

https://github.com/kaspernj/gtk3assist/tree/master/lib

这可能是我们一直在等待的多Ruby和多操作系统GUI库:-)我已经在Linux和Mac下工作了(还没有在Windows上试过)。