Bug #5137
closed
Ruby SVN Revision 32800: Cannot run installed ruby interpreter, Malformed Mach-o file
Added by cwgem (Chris White) over 13 years ago.
Updated over 13 years ago.
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.
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
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.
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$
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.
- 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?
Also available in: Atom
PDF
Like0
Like0Like0Like0Like0Like0