是否可以使用Bundler安装gem并告诉它使用特定gem的特定编译器?

时间:2014-10-19 16:07:21

标签: ruby gcc bundler osx-yosemite

我无法在运行Yosemite的新Mac上安装我的gem包,因为一个gem只安装了OS附带的C编译器,而另一个需要Homebrew的C编译器。

我完全无法工作,只是因为这个错误导致了gcc 4.9.1版本cc1: error: -Werror=shorten-64-to-32: no option -Wshorten-64-to-32 的错误:

bundle install

我不明白这个错误的含义,也不知道如何告诉编译器忽略它。或者甚至是可能的

我的具体情况是v8 gem上运行Gem::Ext::BuildError: ERROR: Failed to build gem native extension. /Users/me/.rbenv/versions/2.1.0/bin/ruby extconf.rb creating Makefile Compiling v8 for x64 Using python 2.7.6 Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 Unable to find a compiler officially supported by v8. It is recommended to use GCC v4.4 or higher Using compiler: g++ Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 Unable to find a compiler officially supported by v8. It is recommended to use GCC v4.4 or higher ../src/cached-powers.cc:136:18: error: unused variable 'kCachedPowersLength' [-Werror,-Wunused-const-variable] static const int kCachedPowersLength = ARRAY_SIZE(kCachedPowers); 失败:

g++

新版XCode附带的Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 编译器将其作为版本:

4.2

所以,gcc已经过时了。如果我可以使用Homebrew CC(即4.9.1)配置一个gem来构建,我认为它会起作用。

我尝试将CXXgcc变量设置为Homebrew Nokogiri,但是{{1}} gem不会安装上面的第一条错误消息。如此多的宝石安装了Yosemite cc,可能会留下最好的路线。我不知道。

1 个答案:

答案 0 :(得分:2)

使用bundle配置你可以传递编译器标志。更多信息可以帮助您获得更好的答案。

请参阅:http://bundler.io/man/bundle-config.1.html

我刚发现:How to install therubyracer gem on 10.10 Yosemite? 这将给你libv8然后v8应该编译和gem安装。在调查这个问题时,我发现Yosemite和clang / gcc等周围存在大量问题,包括对nokogiri的修复:Installing Nokogiri on OSX 10.10 Yosemite

基本上,从我收集的yosemite gcc编译器过时(原始错误意味着编译器不能识别给定的编译选项,即gcc 4.2中不存在该功能)。我认为最好的解决方案是通过自制软件和安装路径等安装更新的gcc,因此gem installs只使用自制软件版本。

希望这些链接有所帮助。