当我尝试安装最新版本的指南针(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(Yosemite)上必须执行以下操作:
1.设置Ruby环境
确保安装ruby并保持最新: ruby -v
更新宝石 sudo gem update --system
2.设置MAC环境
- 安装Xcode命令行工具这是安装Compass的关键.
ruby -v
- 安装Xcode命令行工具是让Compass在OS X上运行的关键
3.安装指南针
sudo gem update --system
最好的方法是sudo apt-get install ruby-compass
安装指南针.
你可以尝试使用Debian
sudo apt-get install gcc ruby-dev rubygems compass
对于Fedora,Centos
yum -y install gcc ruby-devel rubygems compass
它对我有用.
我和你在同一个问题上挣扎了大约3个小时.截至Compass 1.0.alpha19
,要求是rvm版本1.9.3.
有几个未收集的帖子,但对我有用的是以下内容:
sudo gem uninstall sass
sudo gem uninstall compass
rvm install ruby-1.9.3-p448
sudo gem install sass --pre
sudo gem install compass --pre
这样做了.希望它也适合你!
为了解决这个问题,我必须确保拥有最新版本的Ruby和宝石gem update --system
; 然后,我必须确保安装了Xcode和命令行工具:xcode-select --install
.
在Mac OS上,您需要安装此功能!
xcode-select --install
嗨,让它在Mac上工作是一个挑战,所以无论如何这里是一个解决方案
安装macports
安装rvm
重启终端
运行rvm requirements
然后运行rvm install 2.1
最后一步来运行 gem install compass --pre
我不确定但是Mavericks上的ruby版本不支持本机扩展等...所以如果你指向其他ruby版本,就像我做"2.1"一样,它工作正常.
不知道为什么这些都没有被标记为正确的答案,但我通过谷歌搜索登陆这里,所以我将传递我所知道的...
@ paul_g的方法非常接近我,我在Mac OSx10.9 Retina上的步骤:
安装macports
安装rvm(与Ruby --insecure
相关问题的ruby add 标志稳定)$\curl -sSL --insecure https://get.rvm.io | bash -s stable --ruby
重启终端/资源您的个人资料
运行rvm requirements --with-gcc=clang
您不必更新Ruby,因为您下载了最后一个稳定版本
最后一步来运行 gem install compass --pre