2014-05-02 14 views
13

Próbuję zainstalować klejnot, a dostaję ten błąd, którego sam i autor klejnotu nigdy wcześniej nie widziałem. Jak to naprawić?BŁĄD: Nie udało się zbudować natywnego rozszerzenia 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

Spróbuj użyć czegoś takiego jak 'rvm' lub' rbenv' zamiast instalować Ruby przez coś, co zakładam jako 'brew'. –

+1

wydaje się być czymś podobnym? http://stackoverflow.com/questions/22352838/ruby-gem-install-json-fails-on-mavericks-and-xcode-5-1-unknown-argument-mul – Alex

Odpowiedz

13

Spróbuj tego:

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

Dla wyjaśnienia patrz this answer

-1

To jest błąd Apple LLVM.

Na razie można:

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

Choć jak widać z nazwy to nie ostrzegawczego trwałego rozwiązania.

Źródło: https://langui.sh/2014/03/10/wunused-command-line-argument-hard-error-in-future-is-a-harsh-mistress/

+0

Obserwowałem ten post, ale wciąż mam to samo 'clang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-argument-hard-error-in-future] clang: note: będzie to trudny błąd (nie można go zmienić na ostrzeżenie) Przyszłość make: *** [ffi_c.bundle] Błąd 1 Pliki Gem pozostaną zainstalowane w /Library/Ruby/Gems/2.0.0/gems/ffi-1.9.3 do kontroli. Wyniki logowania do /Library/Ruby/Gems/2.0.0/gems/ffi-1.9.3/ext/ffi_c/gem_make.out Davids-MacBook-Pro: ~ david $ echo $ ARCHFLAGS -Wno-błąd = nieużywany -polecenia-linii-argumentu-ciężkiego-błędu-w-przyszłości? –

+1

Przyjęta odpowiedź jest taka sama od tej 9 dni po. :( – dx7

17

Jeżeli to ma miejsce w OSX Mavericks, upewnij wiersza polecenia narzędzia są zainstalowane, wykonując następujące czynności.

Starsze wydania OSX & XCode zainstalował narzędzia wiersza poleceń w samym ID XCode. W OSX Mavericks musiałem uruchomić poniższe polecenia, aby naprawić moje narzędzia wiersza poleceń, dzięki czemu mogłem zainstalować rubygemy używając natywnych rozszerzeń.

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

Czy przeczytałeś opis nagrody? Polecenie instalacji już nie działa http://imgur.com/yNM2RRC –

+0

Przepraszam, musiałem przeskoczyć ostatni link, patrzę na inne obrazy i ja ' Zaktualizuję, jeśli coś wymyślę: – Chris

+2

Możesz pobrać narzędzia z linii poleceń bezpośrednio ze strony internetowej Apple, zalogować się i powinno być kilka wpisów w dół https://developer.apple.com/downloads/index.action# – Cereal

0

na OSX-10.9.5 użyciu xcode-select --install nie działa dla mnie. Zaczęło się i poprosiło o potwierdzenie licencji, ale potem zgłosiło, że nie może znaleźć oprogramowania.

Skończyło się na odwiedzeniu: https://developer.apple.com/downloads/index.action#, pobranie odpowiedniego dmg CommandLineTools dla OSX-10.9.5, ręczne zainstalowanie narzędzi z pkg, a następnie użycie: xcode-select --switch=/Library/Developer/CommandLineTools, aby ustawić ścieżkę.

Po czym wszystko działało dobrze.

Powiązane problemy