osx mavericks没有安装"gem install therubyracer -v'0.10.2"

use*_*889 90 macos gem ruby-on-rails therubyracer osx-mavericks

尝试使用"gem install therubyracer -v'0.10.2'"在小牛上安装therubyracer但是我收到以下错误:

/Users/dennischen/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
checking for main() in -lobjc... yes
creating Makefile

make
compiling rr.cpp
clang: warning: argument unused during compilation: '-rdynamic'
rr.cpp:48:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
1 warning generated.
compiling v8.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_array.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_callbacks.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_context.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_date.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_debug.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_exception.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_exception.cpp:10:16: warning: unused variable 'stack' [-Wunused-variable]
  static void* stack[20];
               ^
1 warning generated.
compiling v8_external.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_external.cpp:10:9: warning: unused variable 'references' [-Wunused-variable]
  VALUE references;
        ^
1 warning generated.
compiling v8_function.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_handle.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_locker.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_locker.cpp:45:5: warning: control reaches end of non-void function [-Wreturn-type]
    }
    ^
v8_locker.cpp:85:5: warning: control reaches end of non-void function [-Wreturn-type]
    }
    ^
2 warnings generated.
compiling v8_message.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_object.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_object.cpp:77:19: warning: unused variable 'proto' [-Wunused-variable]
    Handle<Value> proto(rr_rb2v8(prototype));
                  ^
1 warning generated.
compiling v8_script.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_string.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_template.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_try_catch.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_v8.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_value.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_value.cpp:100:9: warning: unused function 'ToInt32' [-Wunused-function]
  VALUE ToInt32(VALUE self) {
        ^
1 warning generated.
compiling v8_weakref.cpp
clang: warning: argument unused during compilation: '-rdynamic'
linking shared-object v8.bundle
clang: error: no such file or directory: '/Users/dennischen/.rvm/gems/ruby-1.9.3-p194@panini/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a'
make: *** [v8.bundle] Error 1
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我弄清楚如何使这个宝石工作?我安装了命令行工具.

Jul*_*pov 241

如果您决定使用较新的therubyracergem版本,则不会再出现此问题

除此以外:

brew tap homebrew/dupes # Thanks Tom
brew install apple-gcc42

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 uninstall v8

gem uninstall libv8

gem install therubyracer -v '0.10.2' # specify version
Run Code Online (Sandbox Code Playgroud)

  • 这种方法似乎比修改符号链接更好 (11认同)
  • 不幸的是,在OSX 10.9,ruby 2.1.0和therubyracer 0.12.1上,这些解决方案都不适用于我. (6认同)
  • `brew tap homebrew/dupes` fixes"错误:没有可用的apple-gcc42公式" (3认同)
  • 你更新到therubyracer 0.12.0更新了这个问题. (2认同)

dam*_*nmr 16

所以我终于在经历了一些挣扎之后才开始工作......感谢西蒙和阿尔瓦罗.

我有一件事要补充,使用标志--with-system-v8对我不起作用...所以我删除了我的系统v8

brew uninstall v8

跑了

gem install libv8

如果您已经gem install libv8使用系统v8标志运行,请确保卸载该gem版本(通过运行来执行gem uninstall libv8).重要的是你不应该使用brew提供的那个,它似乎不适用于Mavericks(它安装得很好,捆绑器会报告你的捆绑包已经完成,但是你的应用程序尝试使用v8时会失败).

总结答案,做以下工作对我有用:

brew install apple-gcc42
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

brew uninstall v8
gem install libv8
gem install therubyracer
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用.但我将gml符号链接到/ usr/local/bin并重新启动终端,所以我可以在安装libv8后将其删除. (2认同)
  • 将具有该特定版本的自制二进制文件与/ usr/bin进行协同处理是一个非常糟糕的主意.随之而来的"brew更新"将使您处于破碎状态. (2认同)

小智 10

我有同样的问题,这对我有用:

therubyracer(0.10.2)&libv8(3.3.10.4)

首先:

  • brew install apple-gcc42
  • 你必须在编译器的所有二进制文件(链接gcc,cpp,g++),以/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/<compiler>

之后,你可以试试这个:

  • brew install v8
  • gem install libv8 -v '3.3.10.4' -- --with-system-v8
  • gem install therubyracer -v 'therubyracer'或者bundle install进入rails项目的目录.


Sim*_*mon 7

我只是遇到了同样的问题,目前有一个解决方案是使用apple-gcc42而不是clang来编译这两个宝石:

brew install apple-gcc42
Run Code Online (Sandbox Code Playgroud)

然后你可以选择在/ usr/bin中为{gcc,g ++,c ++}二进制文件做一些符号链接:

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
Run Code Online (Sandbox Code Playgroud)

事实上,g ++应该足够了.

或者......您可以使用与自制软件创建的二进制文件对应的路径导出CC/CXX/CPP环境变量.这肯定是一个更清洁的解决方法.

第三种解决方案是下载Xcode 4.6.3并将其安装在Applications文件夹中.然后,进入终端:

sudo xcode-select --switch /Applications/Xcode4.6.3.app/Contents/Developer
gem install therubyracer
Run Code Online (Sandbox Code Playgroud)

安装gem后,您可以切换回Xcode 5.0:

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
Run Code Online (Sandbox Code Playgroud)


M. *_*ord 6

我找到了一个没有安装apple-gcc42的解决方法.

如果您收到的错误消息如下所示,这将有效:

clang: error: no such file or directory: '/Users/mscottford/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a'
Run Code Online (Sandbox Code Playgroud)

然后你应该能够做到以下几点:

brew install v8
bundle install 
# after failing create link from brew installed v8 to error location
ln -s /usr/local/Cellar/v8/3.21.17/lib/libv8_base.x64.a /Users/mscottford/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a
bundle install
Run Code Online (Sandbox Code Playgroud)

资料来源:https://github.com/cowboyd/therubyracer/issues/277#issuecomment-27734348