我正在研究一个需要热量计的项目。当我进行捆绑安装时,当捆绑器尝试安装therubyracer时,我收到以下错误消息。
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/usr/bin/ruby extconf.rb
checking for main() in -lpthread... yes
checking for v8.h... yes
creating Makefile
make "DESTDIR="
g++ -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -D_FILE_OFFSET_BITS=64 -Wall -g -rdynamic -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -march=i686 -mtune=atom -fasynchronous-unwind-tables -m32 -o init.o -c init.cc
g++ -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -D_FILE_OFFSET_BITS=64 -Wall -g -rdynamic -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -march=i686 -mtune=atom -fasynchronous-unwind-tables -m32 -o signature.o -c signature.cc
g++ -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -D_FILE_OFFSET_BITS=64 -Wall -g -rdynamic -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -march=i686 -mtune=atom -fasynchronous-unwind-tables -m32 -o exception.o -c exception.cc
g++ -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -D_FILE_OFFSET_BITS=64 -Wall -g -rdynamic -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -march=i686 -mtune=atom -fasynchronous-unwind-tables -m32 -o primitive.o -c primitive.cc
g++ -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -D_FILE_OFFSET_BITS=64 -Wall -g -rdynamic -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -march=i686 -mtune=atom -fasynchronous-unwind-tables -m32 -o context.o -c context.cc
In file included from context.cc:1:0:
context.cc: In static member function ‘static VALUE rr::Context::SetEmbedderData(VALUE, VALUE, VALUE)’:
context.cc:81:23: error: ‘class v8::Context’ has no member named ‘SetEmbedderData’
Void(Context(self)->SetEmbedderData(NUM2INT(index), Value(data)));
^
rr.h:33:20: note: in definition of macro ‘Void’
#define Void(expr) expr; return Qnil;
^
context.cc: In static member function ‘static VALUE rr::Context::GetEmbedderData(VALUE, VALUE)’:
context.cc:85:23: error: ‘class v8::Context’ has no member named ‘GetEmbedderData’
Void(Context(self)->GetEmbedderData(NUM2INT(index)));
^
rr.h:33:20: note: in definition of macro ‘Void’
#define Void(expr) expr; return Qnil;
^
make: *** [context.o] Error 1
Gem files will remain installed in /home/anupam/.gem/ruby/gems/therubyracer-0.12.1 for inspection.
Results logged to /home/anupam/.gem/ruby/gems/therubyracer-0.12.1/ext/v8/gem_make.out
An error occurred while installing therubyracer (0.12.1), and Bundler cannot continue.
Make sure that `gem install therubyracer -v '0.12.1'` succeeds before bundling.
当我运行gem install therubyracer -v'0.12.1'或没有版本时,它仍然失败。
我是ruby的新手,所以我真的不明白发生了什么或者为什么会失败。
非常感谢任何帮助。
答案 0 :(得分:1)
我在Fedora 24 x64上遇到了同样的问题,sudo dnf -y install gcc-c++
解决了我的问题
答案 1 :(得分:0)
我删除了所有宝石。
卸载红宝石
重新安装ruby ruby-devel
安装ruby和ruby-devel并使用yum not gem安装therubyracer和libv8。
然后我运行了bundle install,gem使用了已经安装的yum安装的gem。
感谢上帝为fedora维护者!你们真棒!
答案 2 :(得分:-1)
我知道这听起来很愚蠢,但我遇到了确切的问题,而且似乎我缺少包gcc-c ++。思想已经有了它们。 yum install gcc-c++
完成了这个伎俩