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
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.
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:inrequire’
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
$ 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
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.
On Wed, Oct 18, 2006 at 04:58:53PM +0900, Brian T. wrote: >
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
You are using mkrf
instead of mkmf, so things work a bit differently.
$ 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'<br> from /home/batsman/usr//lib/ruby/1.8/mkmf.rb:4<br> 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]