Подтвердить что ты не робот

ОШИБКА: Не удалось создать собственное расширение 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
4b9b3361

Ответ 1

Попробуйте следующее:

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

Для объяснения см. этот ответ

Ответ 2

Если это происходит в OSX Mavericks, убедитесь, что инструменты командной строки установлены, выполнив следующее.

В старых версиях OSX и XCode была установлена ​​для инструментов командной строки в самой XCode IDE. В OSX Mavericks мне пришлось запустить приведенные ниже команды, чтобы исправить мои инструменты командной строки, чтобы я мог устанавливать rubygems с помощью собственных расширений.

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

Ответ 3

В OSX-10.9.5 с использованием xcode-select --install не работает для меня. Он начал и попросил подтвердить лицензию, но затем сообщил, что не может найти программное обеспечение.

В итоге я посетил: https://developer.apple.com/downloads/index.action#, загрузив соответствующий файл CommandLineTools dmg для OSX-10.9.5, установив инструменты вручную из pkg, а затем используя: xcode-select --switch=/Library/Developer/CommandLineTools, чтобы установить путь.

После чего все работало нормально.