Hello, I'm attempting to cross compile a ruby extension for Windows from a Linux box. Im running Ubuntu 6.06, Ruby 1.8.5, and mingw gcc 3.4.4. I attempted to follow Mauricio Fernandez's instructions http://eigenclass.org/hiki.rb?cross+compiling+rcovrt#f01 The file compiled but it appears that it is still a Linux binary. json_ext.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), not stripped Is there something that I may be missing? Thank you, Brian Takita
on 18.10.2006 09:59
on 18.10.2006 15:54
On 10/18/06, Brian Takita <brian.takita@gmail.com> wrote: > I'm attempting to cross compile a ruby extension for Windows from a Linux > box. > Im running Ubuntu 6.06, Ruby 1.8.5, and mingw gcc 3.4.4. I don't recommend doing this if you want your extension to be compatible with the current Windows Ruby release. -austin
on 18.10.2006 19:46
On 10/18/06, Austin Ziegler <halostatue@gmail.com> wrote: > > On 10/18/06, Brian Takita <brian.takita@gmail.com> wrote: > > I'm attempting to cross compile a ruby extension for Windows from a > Linux > > box. > > Im running Ubuntu 6.06, Ruby 1.8.5, and mingw gcc 3.4.4. > > I don't recommend doing this if you want your extension to be > compatible with the current Windows Ruby release. Thanks for your reply. I'm at my wit's end in compiling ruby extensions on Windows. Ruby 1.8.5 is compiled under VC 6, right? Its too bad that is very difficult to compile extensions for Windows. Do you mind if I pick your brain at the conference? -austin
on 18.10.2006 20:50
On 10/18/06, Brian Takita <brian.takita@gmail.com> wrote: > > Its too bad that is very difficult to compile extensions for Windows. > > Do you mind if I pick your brain at the conference? You can try -- I'm going to be interested in picking a lot of peoples' brains at the conference about this issue. See a notice that I'll be posting later tonight. -austin
on 18.10.2006 20:54
On Wed, Oct 18, 2006 at 04:58:53PM +0900, Brian Takita wrote: > json_ext.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), > not stripped You are using mkrf instead of mkmf, so things work a bit differently. $ cat extconf.rb require 'rubygems' require 'mkrf' dir = File.dirname(__FILE__) Mkrf::Generator.new('json_ext', "#{dir}/*.c") $ cat > extconf.rb require 'mkmf' create_makefile "json_ext" $ ruby -I ~/usr/ruby-mingw32/lib/ruby/1.8/i386-mingw32 extconf.rb /home/batsman/ruby-mingw32/lib/ruby/1.8/i386-mingw32/rbconfig.rb:7: ruby lib version (1.8.4) doesn't match executable version (1.8.5) (RuntimeError) from /home/batsman/usr//lib/ruby/1.8/mkmf.rb:4:in `require' from /home/batsman/usr//lib/ruby/1.8/mkmf.rb:4 from extconf.rb:1:in `require' from extconf.rb:1 [use vim to edit rbconfig.rb and remove/comment the version check if the native & cross-compiled ruby version differ] $ ruby -I ~/ruby-mingw32/lib/ruby/1.8/i386-mingw32/ extconf.rb creating Makefile $ make i586-mingw32msvc-gcc -I. -I/home/batsman/ruby-mingw32/lib/ruby/1.8/i386-mingw32 -I/home/batsman/ruby-mingw32/lib/ruby/1.8/i386-mingw32 -I. -g -O2 -c json_ext.c i586-mingw32msvc-gcc -shared -s -Wl,--enable-auto-import,--export-all -L"/home/batsman/ruby-mingw32/lib" -o json_ext.so json_ext.o -lmsvcrt-ruby18 -lwsock32 $ file json_ext.so json_ext.so: MS Windows PE 32-bit Intel 80386 console DLL
on 18.10.2006 21:00
On Wed, Oct 18, 2006 at 10:52:55PM +0900, Austin Ziegler wrote: > On 10/18/06, Brian Takita <brian.takita@gmail.com> wrote: > >I'm attempting to cross compile a ruby extension for Windows from a Linux > >box. > >Im running Ubuntu 6.06, Ruby 1.8.5, and mingw gcc 3.4.4. > > I don't recommend doing this if you want your extension to be > compatible with the current Windows Ruby release. Isn't mingw supposed to be compatible with the MSVC (which the One Click Installer uses now instead of some newer VC++) builds? Ara mentioned some incompatibility on ruby-core (a problem with isascii IIRC) but it had been solved in CVS for a while.
on 19.10.2006 04:02
On 10/18/06, Mauricio Fernandez <mfp@acm.org> wrote: > > http://eigenclass.org/hiki.rb?cross+compiling+rcovrt#f01 > require 'mkrf' > from /home/batsman/usr//lib/ruby/1.8/mkmf.rb:4:in `require' > i586-mingw32msvc-gcc -I. > -I/home/batsman/ruby-mingw32/lib/ruby/1.8/i386-mingw32 > -I/home/batsman/ruby-mingw32/lib/ruby/1.8/i386-mingw32 -I. -g -O2 -c > json_ext.c > i586-mingw32msvc-gcc -shared -s > -Wl,--enable-auto-import,--export-all -L"/home/batsman/ruby-mingw32/lib" -o > json_ext.so json_ext.o -lmsvcrt-ruby18 -lwsock32 > $ file json_ext.so > json_ext.so: MS Windows PE 32-bit Intel 80386 console DLL Thanks for demoing this. I'll give it a shot. -- > Mauricio Fernandez - http://eigenclass.org - singular Ruby > > On 10/18/06, <b class="gmail_sendername">Mauricio Fernandez</b> <<a href="mailto:mfp@acm.org">mfp@acm.org</a>> wrote:<div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> On Wed, Oct 18, 2006 at 04:58:53PM +0900, Brian Takita wrote:<br>> Hello,<br>><br>> I'm attempting to cross compile a ruby extension for Windows from a Linux<br>> box.<br>> Im running Ubuntu 6.06, Ruby 1.8.5 , and mingw gcc 3.4.4.<br>><br>> I attempted to follow Mauricio Fernandez's instructions<br>> <a href="http://eigenclass.org/hiki.rb?cross+compiling+rcovrt#f01">http://eigenclass.org/hiki.rb?cross+compiling+rcovrt#f01 </a><br>><br>> The file compiled but it appears that it is still a Linux binary.<br>> json_ext.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV),<br>> not stripped<br><br>You are using mkrf instead of mkmf, so things work a bit differently. <br><br>$ cat extconf.rb<br>require 'rubygems'<br>require 'mkrf'<br><br>dir = File.dirname(__FILE__)<br>Mkrf::Generator.new('json_ext', "#{dir}/*.c")<br>$ cat > extconf.rb<br>require 'mkmf'<br>create_makefile "json_ext" <br>$ ruby -I ~/usr/ruby-mingw32/lib/ruby/1.8/i386-mingw32 extconf.rb<br>/home/batsman/ruby-mingw32/lib/ruby/1.8/i386-mingw32/rbconfig.rb:7: ruby lib version (1.8.4) doesn't match executable version (1.8.5) (RuntimeError) <br> from /home/batsman/usr//lib/ruby/1.8/mkmf.rb:4:in `require'<br> from /home/batsman/usr//lib/ruby/1.8/mkmf.rb:4<br> from extconf.rb:1:in `require'<br> from extconf.rb:1<br><br>[use vim to edit rbconfig.rb and remove/comment the version check if the<br>native & cross-compiled ruby version differ]<br><br>$ ruby -I ~/ruby-mingw32/lib/ruby/1.8/i386-mingw32/ extconf.rb<br>creating Makefile<br>$ make<br>i586-mingw32msvc-gcc -I. -I/home/batsman/ruby-mingw32/lib/ruby/1.8/i386-mingw32 -I/home/batsman/ruby-mingw32/lib/ruby/1.8/i386-mingw32 -I. -g -O2 -c json_ext.c <br>i586-mingw32msvc-gcc -shared -s -Wl,--enable-auto-import,--export-all -L"/home/batsman/ruby-mingw32/lib" -o json_ext.so json_ext.o -lmsvcrt-ruby18 -lwsock32<br>$ file json_ext.so<br>json_ext.so: MS Windows PE 32-bit Intel 80386 console DLL </blockquote><div><br>Thanks for demoing this. I'll give it a shot. <br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">--<br>Mauricio Fernandez - <a href="http://eigenclass.org">http://eigenclass.org</a> - singular Ruby<br><br></blockquote></div><br>
on 19.10.2006 07:43
On 10/18/06, Brian Takita <brian.takita@gmail.com> wrote: > > > > > $ cat extconf.rb > > lib version (1.8.4) doesn't match executable version (1.8.5) > > creating Makefile > > > Thanks for demoing this. I'll give it a shot. > It looks like the compile worked. I did not run make install on mingw. There where a couple of issues with the install task, such as rubyw.exemissing and the .ext directory missing. To resolve this I copied ruby.exe to rubyw.exe and the ext directory to .ext Thank you, Brian --
on 19.10.2006 07:47
On 10/18/06, Austin Ziegler <halostatue@gmail.com> wrote: > > Thanks for your reply. I'm at my wit's end in compiling ruby extensions > on > > Windows. Ruby 1.8.5 is compiled under VC 6, right? > > > > Its too bad that is very difficult to compile extensions for Windows. > > > > Do you mind if I pick your brain at the conference? > > You can try -- I'm going to be interested in picking a lot of peoples' > brains at the conference about this issue. See a notice that I'll be > posting later tonight. Yes. It would be good to look for a resolution to this issue at the conference. I cant wait to read your post. -austin