Project

General

Profile

Actions

Bug #5137

closed

Ruby SVN Revision 32800: Cannot run installed ruby interpreter, Malformed Mach-o file

Added by cwgem (Chris White) over 12 years ago. Updated over 12 years ago.

Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 1.9.2p290 (2011-07-09) [x86_64-darwin10.8.0]
Backport:
[ruby-core:38657]

Description

I have compiled Ruby trunk, with the following configure options:

./configure --prefix=/Users/chriswhite/Ruby/ruby-trunk

And after that:

make clean && make && make install

When I attempt to run the installed version, I get the following:

SOLAR:ruby chriswhite$ ~/Ruby/ruby-trunk/bin/ruby -v
-bash: /Users/chriswhite/Ruby/ruby-trunk/bin/ruby: Malformed Mach-o file

However, when I run the version in the source tree I get:

SOLAR:ruby chriswhite$ ./ruby -v
ruby 1.9.4dev (2011-08-01 trunk 32800) [x86_64-darwin10.8.0]

It seem that something in the make install process is causing this issue, but I'm not sure what it is. The ruby -v I've indicated is the version of ruby used when compiling trunk. This occurs for me on Mac OSX 10.6.8. Let me know any specific information you need and I'll provide it as soon as possible.

Updated by naruse (Yui NARUSE) over 12 years ago

Try following:
rm -rf /Users/chriswhite/Ruby/ruby-trunk
cd
./configure --prefix=/Users/chriswhite/Ruby/ruby-trunk --with-gcc=gcc-4.2
make all install

Updated by cwgem (Chris White) over 12 years ago

Yui NARUSE wrote:

Try following:
rm -rf /Users/chriswhite/Ruby/ruby-trunk
cd
./configure --prefix=/Users/chriswhite/Ruby/ruby-trunk --with-gcc=gcc-4.2
make all install

I tried this and got the same result. I notice that the source tree ruby and the ruby installed in the target directory are different sizes. I don't see strip being used, so I'm not sure what's causing this.

Actions #3

Updated by cwgem (Chris White) over 12 years ago

I also just noticed that if I use --enable-shared with ./configure, the library reference to the dylib disappears in the installed version, but remains in the source tree version:

SOLAR:~ chriswhite$ otool -L ~/Source/Repository/ruby/ruby ; otool -L ~/Ruby/ruby-trunk/bin/ruby
/Users/chriswhite/Source/Repository/ruby/ruby:
/Users/chriswhite/Ruby/ruby-trunk/lib/libruby.1.9.1.dylib (compatibility version 1.9.1, current version 1.9.1)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 227.0.0)
/Users/chriswhite/Ruby/ruby-trunk/bin/ruby:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 227.0.0)
SOLAR:~ chriswhite$

Updated by cwgem (Chris White) over 12 years ago

After some more in depth research, I realized that the issue was that a ruby executable existed in the toplevel source's bin/ directory which was overwriting the proper ruby executable. Since the file was not recreated after a clean build, this bug should be closed as invalid.

I would recommend however that the ruby in the toplevel directory get installed after all the files in bin/ just in case.

Updated by naruse (Yui NARUSE) over 12 years ago

  • Status changed from Open to Rejected

Chris White wrote:

I would recommend however that the ruby in the toplevel directory get installed after all the files in bin/ just in case.

Usually ruby source directory doesn't have bin/ruby, why does it exist?

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0