在小牛队上安装libv8和therubyracer

时间:2015-01-27 23:34:12

标签: ruby-on-rails ruby gcc therubyracer libv8

我准备在小牛队10.9上安装therubyracer宝石时将我的头发撕掉 - 任何帮助都会非常赞赏。

据我所知,关于这个问题还有很多其他问题,但实际上没有一个(包括各种组合和有希望的重审,已经消耗了2天以上)解决了任何问题

  1. 卸载libv8并安装therubyracer
  2. 使用brew install libv8代替
  3. 安装apple-gcc或类似的
  4. 安装各种版本的XcodeDeveloper Tools
  5. 重新安装rvm并重新构建ruby 1.9.3
  6. 我能够实现的最新功能是收到此错误消息:

    > gem install therubyracer
    Building native extensions.  This could take a while...
    ERROR:  Error installing therubyracer:
      ERROR: Failed to build gem native extension.
    
        /Users/aqua/.rvm/rubies/ruby-1.9.3-p545/bin/ruby -r ./siteconf20150127-54061-10i2fna.rb extconf.rb
    checking for main() in -lpthread... yes
    checking for main() in -lobjc... yes
    creating Makefile
    
    make  clean
    
    make
    compiling accessor.cc
    g++-4.6: error: unrecognized option '-rdynamic'
    make: *** [accessor.o] Error 1
    
    make failed, exit code 2
    
    Gem files will remain installed in /Users/aqua/.rvm/gems/ruby-1.9.3-p545/gems/therubyracer-0.12.1 for inspection.
    Results logged to /Users/aqua/.rvm/gems/ruby-1.9.3-p545/extensions/x86_64-darwin-13/1.9.1/therubyracer-0.12.1/gem_make.out
    

    围绕g++-4.6: error: unrecognized option '-rdynamic'似乎没有太多信息。我的第一个猜测可能是gcc46不支持这个标志。

    根据其他帖子建议,我尝试安装apple-gcc42

    brew tap homebrew/dupes
    brew install apple-gcc42
    

    使用适当的环境上下文变量再次执行它以将其指向新的apple-gcc42安装:

    > $ CC=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2 CPP=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/cpp-4.2 CXX=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/g++-4.2 gem install therubyracer
    

    仍然没有运气,而且奇怪的是仍然会对gcc46犯同样的错误,这让我觉得它根本没有找到apple-gcc42

    我甚至尝试使用正确的版本进行符号化(当然备份原件)

    cd /usr/bin
    
    mv gcc gcc_backup
    mv g++ g++_backup
    mv cpp cpp_backup
    
    sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2 /usr/bin/gcc
    sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/g++-4.2 /usr/bin/g++
    sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/cpp-4.2 /usr/bin/cpp
    

    绝对没有运气,还在投掷g++-4.6: error: unrecognized option '-rdynamic'

    所以...... 如何强制gem install使用特定的编译器版本?那是不是正确的做法?

    感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我也遇到了同样的问题。按照您上面描述的相同步骤进行操作。以下是我为安装therubyracer所做的额外出口。

export CC=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2
export CXX=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/g++-4.2
export CPP=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/cpp-4.2

我没有做 brew install libv8

接下来,卸载了libv8 gem

gem uninstall libv8

最后安装了therubyracer

gem install therubyracer -v='0.12.2'

我正在使用ruby 2.2.2,希望这有帮助。