2014-05-02 11 views
13

Ich versuche, ein Juwel zu installieren, und ich bekomme diesen Fehler, den ich selbst und der Edelstein Autor noch nie zuvor gesehen haben. Wie behebe ich das?FEHLER: Fehler beim Erstellen gem gemeiner Erweiterung (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

Versuchen Sie, etwas wie 'rvm' oder' rbenv' zu verwenden, anstatt Ruby durch etwas zu installieren, von dem ich annehme, dass es 'brew' ist. –

+1

scheint etwas ähnliches? http://stackoverflow.com/questions/22352838/ruby-gem-install-json-fails-on-mavericks-and-xcode-5-1-unknown-argument-mul – Alex

Antwort

13

Try this:

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

Eine Erklärung this answer

-1

Dies ist ein Apple LLVM-Fehler.

Vorerst können Sie:

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

Obwohl, wie Sie von der Warnung Name nicht eine dauerhafte Lösung zu sehen.

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

+0

Ich folgte diesem Beitrag, aber immer noch das gleiche 'clang: error: unbekanntes Argument: '-multiply_definedsuppress' [-Wunused-Kommandozeilenargument-hard-error-in-future] clang: Hinweis: Dies wird ein schwerer Fehler sein (kann nicht zu einer Warnung herabgestuft werden) die Zukunft make: *** [ffi_c.bundle] Fehler 1 Gem-Dateien bleiben zur Überprüfung in /Library/Ruby/Gems/2.0.0/gems/ffi-1.9.3 installiert. Ergebnisse protokolliert in /Library/Ruby/Gems/2.0.0/gems/ffi-1.9.3/ext/ffi_c/gem_make.out Davids-MacBook-Pro: ~ david $ echo $ ARCHFLAGS -Wno-Fehler = unbenutzt -command-line-argument-hard-error-in-future' Ideen? –

+1

Die angenommene Antwort ist die gleiche von dieser 9 Tage nach. :( – dx7

17

Wenn dies in OSX Mavericks auftreten, stellen Sie sicher Sie bitte die Kommandozeilen-Tools, indem Sie den folgenden installiert sind.

Ältere Versionen von OSX & XCode hatte die Installation für die Befehlszeilentools in der XCode IDE selbst. In OSX Mavericks musste ich die folgenden Befehle ausführen, um meine Kommandozeilen-Tools zu reparieren, so dass ich Rubygems mit nativen Erweiterungen installieren konnte.

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

Hast du die Kopfgeldbeschreibung gelesen? Der Installationsbefehl funktioniert nicht mehr http://imgur.com/yNM2RRC –

+0

Entschuldigung, ich muss den letzten Link übersprungen haben. Ich schaue mir die anderen Bilder an und ich ' ll update, wenn ich an etwas denke – Chris

+2

Sie können die Befehlszeilen-Tools direkt von der Apple-Website herunterladen.Loggen Sie sich ein, und es sollte ein paar Einträge nach unten sein. https://developer.apple.com/downloads/index.action# – Cereal

0

Auf OSX-10.9.5 sehen xcode-select --install mit nicht für mich arbeiten. Es fing an und bat darum, die Lizenz zu bestätigen, meldete dann aber, dass die Software nicht gefunden werden konnte.

Ich besuchte schließlich: https://developer.apple.com/downloads/index.action#, die entsprechenden CommandLineTools dmg für OSX-10.9.5 herunterladen, installieren Sie die Tools manuell aus dem pkg, und verwenden Sie dann: xcode-select --switch=/Library/Developer/CommandLineTools, um den Pfad festzulegen.

Danach hat alles gut funktioniert.

Verwandte Themen