I can’t go by RUBY_PLATFORM – I’m setting up a new 32-bit Linux box,
and RUBY_PLATFORM is set to “i686-linux”.
Or maybe this is a bug – repaved machine, installed Fedora Core 9,
downloaded and built a vanilla Ruby 1.8.6 – but I see this on another
32-bit Linux box as well (this one’s a virtual host, but cat /proc/ cpuinfo
suggests it’s 32-bit)
If anyone’s wondering, this is related to the Komodo debugger. The
ruby-debug-base component is not 32/64-bit universal, so I need to
put the 32-bit binary in one dir, the 64-bit one in another, and
direct the client to the right spot.
Thanks,
Eric P.
On Wednesday 03 September 2008 02:39:37 Eric P. wrote:
I can’t go by RUBY_PLATFORM – I’m setting up a new 32-bit Linux box,
and RUBY_PLATFORM is set to “i686-linux”.
Well, i?86 means it is 32bit.
64-bit x86 system would have ‘x86_64-linux’.
Jan
Eric P. wrote:
Can a Ruby program determine whether
it’s running on a 32-bit or 64-bit system?
Yes. Look at the result of calling the ‘size’ method on a Fixnum; it
will be 4 on 32-bit machines, and 8 on 64-bit machines.
0.size
=> 4
I got 4 on 64bit Windows Server. That doesn’t mean that it depends if it
was
built on 64bit or 32bit, I mean ruby core.
2008/9/2 Suraj K. [email protected]
Le 3 septembre 2008 à 02:42, Eric P. a écrit :
I can’t go by RUBY_PLATFORM – I’m setting up a new 32-bit Linux box,
and RUBY_PLATFORM is set to “i686-linux”.
Pack has a support for native size :
RUBY_PLATFORM
=> “i386-freebsd6”
[ -1 ].pack(‘l!’).length
=> 4
While…
RUBY_PLATFORM
=> “amd64-freebsd7”
[ -1 ].pack(‘l!’).length
=> 8
(From the Pickaxe : ‘Any of the directives “sSiIlL” may be followed by
an underscore (_) or bang (!) to use the underlying platform’s native
size for the specified type’)
Fred
Suraj K. wrote:
Eric P. wrote:
Can a Ruby program determine whether
it’s running on a 32-bit or 64-bit system?
Yes. Look at the result of calling the ‘size’ method on a Fixnum; it
will be 4 on 32-bit machines, and 8 on 64-bit machines.
0.size
=> 4
On my 32 bit machine I get this:
p 0.size
=> 8
p [ -1 ].pack(‘l!’).length
=> 4
I am not sure why, but there it is, fyi.