I was having some trouble installing eventmachine (a ruby gem that needs an extension library written in C++) recently in Mac OS X Leopard. I am currently running ruby 1.8.8dev. I think, perhaps, when I compiled ruby from source, the config left out the CXX flags setting. This makes mkmf not know what C++ compiler it needs to set in the Makefiles it creates. Since there are not too many gems that have extensions written in C++ (that I know of), I never really ran into this issue. Here is how to fix this.
Edit this file inside the directory of the gem, in my case;
$ vim /usr/local/lib/ruby/gem/1.8/gem/eventmachine-0.12.11/ext/extconf.rb
Right above the last line (the last line being a call to create_makefile), insert this line:
CONFIG['CXX'] = g++
then do the same thing for this extconf.rb in the fastfilereader dir (or anywhere else in the ext dir where there might be more nested extconf.rb files.
then run this:
cd /usr/local/lib/ruby/gem/1.8/gem/eventmachine-0.12.11; rake gem:install
this should solve the issue of getting errors like this:
make: I.: Command not found
make: dynamic: Command not found
Subscribe to:
Post Comments (Atom)
1 comment:
Chris,
Thanks very much for posting this where I could find it on Google. You saved me from pulling much hair out, as I had no a clue what the error really was.
For the benefit of future readers who, like myself, have never looked at the contents of a extconf.rb file before, placing the CONFIG statement at the bottom of the file didn't work. Perhaps a newer version of RubyGems or eventmachine changed things. However, the fix is still to insert the missing CONFIG statement.
It worked when I added the CONFIG statement to the /darwin/ clause of the RUBY_PLATFORM case statement, as follows.
when /darwin/
# on Unix we need a g++ link, not gcc.
# Ff line contributed by Daniel Harple.
CONFIG['CXX'] = "g++"
CONFIG['LDSHARED'] = "$(CXX) " + CONFIG['LDSHARED'].split[1..-1].join(' ')
NOTE: I also had to quote "g++".
Post a Comment