2014-05-02 71 views
13

我试图安装一个gem,并且我得到了这个错误,这是我自己和gem作者以前从未见过的。我该如何解决?错误:无法构建gem本机扩展(ruby extconf.rb):Mac OSX

Davids-MacBook-Pro:web david$ sudo /usr/bin/gem install compass --pre 
Password: 
Building native extensions. This could take a while... 
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=" 
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 


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/gems/ffi-1.9.3/ext/ffi_c/gem_make.out 
+1

尝试使用'rvm'或'rbenv'而不是通过我认为是'brew'安装Ruby。 –

+1

似乎有点类似? http://stackoverflow.com/questions/22352838/ruby-gem-install-json-fails-on-mavericks-and-xcode-5-1-unknown-argument-mul – Alex

回答

13

试试这个:

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install <gemName> 

有关说明使用xcode-select --install我没有工作,看到this answer

-1

这是苹果LLVM错误。

现在,您可以:

export ARCHFLAGS="-Wno-error=unused-command-line-argument-hard-error-in-future" 

虽然你可以从警告这名不是一个永久性的解决方案看。

来源:https://langui.sh/2014/03/10/wunused-command-line-argument-hard-error-in-future-is-a-harsh-mistress/

+0

我跟着那个帖子,但仍然得到相同的'clang:error:unknown argument:'-multiply_definedsuppress'[-Wunused-command-line-argument-hard-error-in-future] clang:注意:这将是一个硬错误(不能降级为警告)未来 make:*** [ffi_c.bundle]错误1 Gem文件仍将安装在/Library/Ruby/Gems/2.0.0/gems/ffi-1.9.3中进行检查。 结果记录到/Library/Ruby/Gems/2.0.0/gems/ffi-1.9.3/ext/ffi_c/gem_make.out Davids-MacBook-Pro:〜david $ echo $ ARCHFLAGS -Wno-error = unused - 命令行参数 - 硬错误 - 未来的想法? –

+1

接受的答案与9天后的答案相同。 ( – dx7

17

如果这是在OSX小牛队的现象发生,请确保在命令行工具运行以下安装。

旧版本的OSX & XCode在XCode IDE本身中安装了命令行工具。在OSX Mavericks中,我不得不运行下面的命令来修复命令行工具,以便使用本机扩展来安装rubygems。

$ sudo xcode-select --install 
$ xcode-select --print-path 
/Library/Developer/CommandLineTools 
+0

)您是否阅读了赏金说明?安装命令不再有效http://imgur.com/yNM2RRC –

+0

我的歉意,我必须跳过最后一个链接,我正在看看其他图片,如果我想到了什么,我会更新 – Chris

+2

你可以直接从苹果网站下载命令行工具登录,它应该是一些条目下载https://developer.apple.com/downloads/index.action# – Cereal

0

在OSX-10.9.5。它开始并要求确认许可证,但之后报告说它找不到该软件。

我结束了访问:https://developer.apple.com/downloads/index.action#,下载相应的CommandLineTools DMG的OSX-10.9.5,从PKG手动安装工具,然后使用:xcode-select --switch=/Library/Developer/CommandLineTools,设置路径。

之后,一切正常。

相关问题