[ruby-on-rails] osx mavericks에 “gem install therubyracer -v ‘0.10.2’”가 설치되지 않음

“gem install therubyracer -v ‘0.10.2’”를 사용하여 mavericks에 Rubyracer를 설치하려고하지만 다음과 같은 오류가 발생합니다.

/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

누구든지이 보석을 작동시키는 방법을 알아낼 수 있습니까? 명령 줄 도구가 설치되어 있습니다.



답변

최신 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


답변

그래서 마침내 어려움을 겪은 후에 작동하게되었습니다. Simon과 Alvaro 덕분입니다.

추가해야 할 것이 하나 있습니다 .– 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


답변

나는 같은 문제가 있었고 이것은 나를 위해 작동합니다.

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 installrails 프로젝트의 디렉토리에.


답변

나는 방금 같은 문제가 있었고 한 가지 해결책은 현재 clang 대신 apple-gcc42 를 사용 하여 두 gem을 모두 컴파일하는 것입니다.

brew install apple-gcc42

그런 다음 {gcc, g ++, c ++} 바이너리에 대해 / usr / bin에서 심볼릭 링크를 수행하는 것 중에서 선택할 수 있습니다.

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 ++ 이면 충분합니다.

또는 … homebrew에서 생성 한 바이너리에 해당하는 경로로 CC / CXX / CPP 환경 변수를 내보낼 수 있습니다. 확실히 더 깨끗한 해결 방법입니다.

세 번째 해결 방법은 Xcode 4.6.3을 다운로드하여 Applications 폴더 에 설치하는 것입니다 . 그런 다음 터미널에 입력하십시오.

sudo xcode-select --switch /Applications/Xcode4.6.3.app/Contents/Developer
gem install therubyracer

gem이 설치되면 Xcode 5.0으로 다시 전환 할 수 있습니다.

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer


답변

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'

그러면 다음을 수행 할 수 있습니다.

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

출처 : https://github.com/cowboyd/therubyracer/issues/277#issuecomment-27734348


답변

많은 답변에서 제안했듯이 가장 쉬운 방법은 Xcode와 함께 설치된 버전 대신 Apple GCC 4.2로 Ruby Racer 기본 확장을 컴파일하는 것입니다.

MacPort를 사용하는 경우 GCC 바이너리에 대한 심볼릭 링크 설정을 수동으로 처리 할 필요가 없습니다. port select명령은 당신을 위해 그것을 않습니다. Mavericks를 설치 한 후 MacPorts를 업데이트하지 않은 경우 sudo port selfupdate. MacPorts가 최신 상태 인 경우 다음을 시도하십시오.

# If you don't have it, install the port for Apple's GCC 4.2
sudo port install apple-gcc42

    # OR

# If you had apple-gcc42 already (before Mavericks), update it
sudo port upgrade apple-gcc42


# Same result as manual symlinking of GCC in other answers
sudo port select gcc apple-gcc42 && hash -r

# Install therubyracer, will install libv8 gem dependency
#  *note* if you have any existing versions of these gems, remove them
gem install therubyracer

# Restore GCC to system default (optional)
sudo port select gcc none && hash -r

일반적으로이 절차 ( sudo port select gcc [version])는 Xcode (10.9 Mavericks / Xcode 5 용 Apple LLVM v5)에서 설치된 버전 대신 특정 GCC 버전을 사용하려는 경우 언제든지 작동합니다.


답변

ruby 2.0.0p353 및 os x 10.9에 Rubyracer 0.12 및 libv8 3.16.14.3을 설치합니다.

libv8에는 gcc42가 필요합니다.

brew install v8
brew install apple-gcc42
sudo ln -sf /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2 /usr/bin/gcc
sudo ln -sf /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/g++-4.2 /usr/bin/g++
sudo ln -sf /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/cpp-4.2 /usr/bin/cpp
gem install libv8

therubyracer에는 나중에 gcc가 필요합니다.

brew install gcc49
sudo ln -sf /usr/local/Cellar/gcc49/4.9-20131110/bin/gcc-4.9 /usr/bin/gcc
sudo ln -sf /usr/local/Cellar/gcc49/4.9-20131110/bin/g++-4.9 /usr/bin/g++
sudo ln -sf /usr/local/Cellar/gcc49/4.9-20131110/bin/cpp-4.9 /usr/bin/cpp

Gemfile

gem 'therubyracer', :require => 'v8', :platforms => :ruby

bundle대신 사용gem install therubyracer