无法构buildgem原生扩展(安装Compass)

当我尝试安装最新版本的指南针( https://rubygems.org/gems/compass/versions/1.0.0.alpha.17 )时,出现以下错误。

ERROR: Error installing compass: ERROR: Failed to build gem native extension. ERROR: Error installing compass: ERROR: Failed to build gem native extension. /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb checking for ffi.h... no checking for ffi.h in /usr/local/include,/usr/include/ffi... yes checking for ffi_call() in -lffi... yes checking for ffi_prep_closure()... yes checking for ffi_raw_call()... no checking for rb_thread_blocking_region()... yes checking for rb_thread_call_with_gvl()... yes checking for rb_thread_call_without_gvl()... yes checking for ffi_prep_cif_var()... no creating extconf.h creating Makefile make "DESTDIR=" clean make "DESTDIR=" compiling AbstractMemory.c compiling ArrayType.c compiling Buffer.c compiling Call.c Call.c:303:5: warning: implicit declaration of function 'rb_thread_call_without_gvl' is invalid in C99 [-Wimplicit-function-declaration] rbffi_thread_blocking_region(call_blocking_function, data, (void *) -1, NULL); ^ ./Thread.h:78:39: note: expanded from macro 'rbffi_thread_blocking_region' # define rbffi_thread_blocking_region rb_thread_call_without_gvl ^ 1 warning generated. compiling ClosurePool.c compiling DataConverter.c DataConverter.c:43:1: warning: control may reach end of non-void function [-Wreturn-type] } ^ 1 warning generated. compiling DynamicLibrary.c compiling ffi.c compiling Function.c Function.c:479:33: warning: incompatible pointer types passing 'VALUE (void *)' to parameter of type 'void *(*)(void *)' [-Wincompatible-pointer-types] rb_thread_call_with_gvl(callback_with_gvl, &cb); ^~~~~~~~~~~~~~~~~ Function.c:102:46: note: passing argument to parameter 'func' here extern void *rb_thread_call_with_gvl(void *(*func)(void *), void *data1); ^ Function.c:563:9: warning: implicit declaration of function 'rb_thread_call_without_gvl' is invalid in C99 [-Wimplicit-function-declaration] rb_thread_call_without_gvl(async_cb_wait, &w, async_cb_stop, &w); ^ Function.c:738:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ 3 warnings generated. compiling FunctionInfo.c compiling LastError.c compiling LongDouble.c compiling MappedType.c compiling MemoryPointer.c compiling MethodHandle.c compiling Platform.c compiling Pointer.c compiling Struct.c compiling StructByReference.c compiling StructByValue.c compiling StructLayout.c compiling Thread.c compiling Type.c compiling Types.c compiling Variadic.c linking shared-object ffi_c.bundle clang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-argument-hard-error-in-future] clang: note: this will be a hard error (cannot be downgraded to a warning) in the future make: *** [ffi_c.bundle] Error 1 make failed, exit code 2 Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/ffi-1.9.3 for inspection. Results logged to /Library/Ruby/Gems/2.0.0/extensions/universal-darwin-13/2.0.0/ffi-1.9.3/gem_make.out 

这里发生了什么? 我如何安装最新的指南针,而没有错误?

试试这个,然后尝试再次安装指南针

 apt-get install ruby-dev 

为了安装指南针在Mac OS X 10.10(优胜美地)必须执行以下操作:

1.设置Ruby环境

  • 确保ruby安装并且是最新的: ruby -v
  • 更新gem的sudo gem update --system

2.设置MAC环境

– 安装Xcode命令行工具这是安装Compass的关键。 xcode-select --install

– 安装Xcode命令行工具是使Compass在OS X上工作的关键

3.安装指南针

sudo gem install compass

最好的方法是sudo apt-get install ruby-compass来安装指南针。

我在同一个问题上挣扎了大约3个小时。 从Compass 1.0.alpha19 ,对rvm版本1.9.3的要求是。

有几个未收集的post,但是为我工作的是以下内容:

  1. sudo gem uninstall sass
  2. sudo gem uninstall compass
  3. rvm install ruby-1.9.3-p448
  4. sudo gem install sass --pre
  5. sudo gem install compass --pre

那是做的。 希望它也适合你!

对于我来解决这个问题,我不得不确保我有最新版本的Ruby和gem gem update --system ; 然后,我必须确保安装了Xcode和命令行工具: xcode-select --install

你可以试试

 sudo apt-get install gcc ruby-devel rubygems compass 

对于Fedora,Centos

 yum -y install gcc ruby-devel rubygems compass 

它为我工作。

嗨,这是一个挑战,让它在Mac上工作,所以无论如何这里是一个解决scheme

  1. 安装macports
  2. 安装rvm
  3. 重新启动terminal
  4. 运行rvm requirements然后运行rvm install 2.1
  5. 最后一步运行gem install compass --pre

我不确定,但小牛的ruby版本不支持本地扩展等…所以,如果你指向其他ruby版本像我做“2.1”,它工作正常。

不知道为什么这些都没有标记为正确的答案,但我通过谷歌search降落在这里,所以我会传递我所知道的…

@ paul_g的方法对我来说是相当接近的,我在Mac os.10.9上的步骤Retina:

  • 安装macports
  • 安装rvm(稳定与ruby添加--insecure标志为SSL相关的问题)$ \curl -sSL --insecure https://get.rvm.io | bash -s stable --ruby \curl -sSL --insecure https://get.rvm.io | bash -s stable --ruby
  • 重新启动terminal/资源您的个人资料
  • 运行rvm requirements --with-gcc=clang因为您下载了最新的稳定版本,所以您不必更新Ruby
  • 最后一步运行gem install compass --pre

您可能需要安装Apple的命令行工具,默认情况下可能未安装在您的系统上。 我得到了同样的错误,但在按照这里的任何说明之前,我安装了命令行工具(由于一个不相关的问题),并且当我再次尝试安装时没有问题的安装罗盘。 因人而异。

为了在Yosemite上安装Compass,您需要设置Ruby环境并安装Xcode命令行工具。 但是,最重要的是,在更新Xcode之后,请确保启动Xcode应用程序并接受Apple许可条款 。 它将完成组件的安装。 之后,你可以安装指南针:sudo gem install compass

你必须有gcc,json_pure

我从几个post收集一些信息

 sudo gem uninstall sass sudo gem uninstall compass sudo gem update --system gem install json_pure (if you have already have continued to next step) sudo yum install gcc gcc-c++ (if you have already have continued to next step) sudo gem install sass sudo gem install compass 

在约塞米蒂,你所要做的就是安装命令行工具。 那么它的工作。

即使其他gem安装好。 您必须运行xcode-select –install以使gem install compass正常工作。

祝你好运。

在Mac OS X 10.9上,如果您尝试xcode-select --install ,您将收到以下错误:

无法安装软件,因为软件更新服务器当前不可用。

解决scheme是直接从Apple网站下载命令行工具(OS X 10.9): https : //developer.apple.com/downloads/index.action?name = for%20Xcode%20-

然后,您将能够安装最新版本的命令行工具。

在Ubuntu 14.04中,当执行apt-get install ruby​​gems时 ,出现错误

E:“rubygems”软件包没有安装应用程序

按照命令解决问题。

sudo apt-get install gcc ruby​​-devel ruby​​gems-integration ruby​​-compass

对于Mac OS:

我的错误是我忘了在XCode – 首选项 – 位置 – 命令行工具select新的XCode安装后的选项(我有2个版本,后来我删除了一个)。 也许它会帮助别人。

在这里输入图像说明

尝试brew install coreutils

我在重build一个老化的sass / compass项目时遇到了这个问题,最近更新了一个同事的ruby 2.2.5。 该项目使用rvm和bundler。 这些是我的命令

 $ rvm install ruby-2.2.5 $ rvm use ruby-2.2.5 $ gem install bundler $ bundle install 

这导致我遇到了着名的ffi安装错误,这是在StackOverflow环境中报告的:

 An error occurred while installing ffi (1.9.14), and Bundler cannot continue. 

解决这个问题的大部分build议是安装Xcode命令行工具。 但是,这已经安装在我的环境中:

 $ xcode-select -p /Library/Developer/CommandLineTools 

其他build议说要安装gcc …所以我试过了:

 $ brew install gcc46 

但是由于分段错误,这也是失败的… ¯\_(ツ)_/¯

所以,我然后尝试手动安装指南针,只是为了看看是否会给出相同的ffi错误:

 $ gem install compass 

但令我惊讶的是,我得到了一个完全不同的错误:

 make: /usr/local/bin/gmkdir: No such file or directory 

所以我search了这个问题,发现这个古老的博客文章说,要安装coreutils:

 $ brew install coreutils 

在用Homebrew安装coreutils后,bundler能够成功完成并安装指南针和依赖项。

结束。

  • sudo gem更新 – 系统
  • sudo gem安装指南针

什么时候

gem安装overcommit

运行也是这个错误已经放在terminal。

 Failed to build gem native extension 

请做同样的事情

 xcode-select --install 

它也将解决这个问题

在Mac OS上,您需要安装此function!

 xcode-select --install 

我需要从Apple App Store安装最新的命令行工具(最近30天内)。

我在Linux Mint上遇到了同样的问题,但是我可以通过卸载ruby并重新安装它来修复它。

卸载ruby:

 sudo apt-get remove ruby 

它报告了一些ruby软件包,如:

 Package 'ruby' is not installed, so not removed The following packages were automatically installed and are no longer required: libruby2.2 ruby-chunky-png ruby-sass rubygems-integration Use 'apt-get autoremove' to remove them. 

卸载剩余的软件包*

 apt-get autoremove 

再次安装ruby

 sudo apt-get install ruby2.2 

安装指南针

 sudo gem install compass 

最后一个命令执行成功。

如果你使用Ubuntu,你应该尝试安装build-essential

 apt install build-essential 

我在安装Ubuntu的时候遇到了麻烦,这个解决scheme对我很有帮助。

Interesting Posts