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
I don't recommend doing this if you want your extension to be
compatible with the current Windows Ruby release.
-austin
···
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.
--
Austin Ziegler * halostatue@gmail.com * http://www.halostatue.ca/
* austin@halostatue.ca * You are in a maze of twisty little passages, all alike. // halo • statue
* austin@zieglers.ca
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 Wed, Oct 18, 2006 at 04:58:53PM +0900, Brian Takita 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
--
Mauricio Fernandez - http://eigenclass.org - singular Ruby
> 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 10/18/06, Austin Ziegler <halostatue@gmail.com> wrote:
On 10/18/06, Brian Takita <brian.takita@gmail.com> wrote:
--
Austin Ziegler * halostatue@gmail.com * http://www.halostatue.ca/
* austin@halostatue.ca * You are in a maze of twisty little passages, all alike. // halo • statue
* austin@zieglers.ca
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 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.
--
Mauricio Fernandez - http://eigenclass.org - singular Ruby
Thanks for demoing this. I'll give it a shot.
···
On 10/18/06, Mauricio Fernandez <mfp@acm.org> wrote:
On Wed, Oct 18, 2006 at 04:58:53PM +0900, Brian Takita 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.
$ 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
--
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>
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 10/18/06, Brian Takita <brian.takita@gmail.com> wrote:
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 Ziegler * halostatue@gmail.com * http://www.halostatue.ca/
* austin@halostatue.ca * You are in a maze of twisty little passages, all alike. // halo • statue
* austin@zieglers.ca
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 10/18/06, Brian Takita <brian.takita@gmail.com> wrote:
On 10/18/06, Mauricio Fernandez <mfp@acm.org> wrote:
>
> On Wed, Oct 18, 2006 at 04:58:53PM +0900, Brian Takita 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.
>
> $ 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
Thanks for demoing this. I'll give it a shot.
--
> Mauricio Fernandez - http://eigenclass.org - singular Ruby
>
> > > 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?
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
···
On 10/18/06, Austin Ziegler <halostatue@gmail.com> wrote:
On 10/18/06, Brian Takita <brian.takita@gmail.com> wrote:
> On 10/18/06, Austin Ziegler <halostatue@gmail.com> wrote:
> > On 10/18/06, Brian Takita <brian.takita@gmail.com> wrote:
--
Austin Ziegler * halostatue@gmail.com * http://www.halostatue.ca/
* austin@halostatue.ca * You are in a maze of twisty little passages, all alike. // halo • statue
* austin@zieglers.ca