it-swarm.com.de

FEHLER: Die native Erweiterung von Gem (Ruby extconf.rb) konnte nicht erstellt werden: Mac OSX

Ich versuche einen Edelstein zu installieren und erhalte diesen Fehler, den ich und der Edelsteinautor noch nie gesehen haben. Wie kann ich das beheben?

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
13
David Williams

Versuche dies:

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

Für eine Erklärung siehe diese Antwort

13
soheildb

Wenn dies in OSX Mavericks der Fall ist, stellen Sie sicher, dass die Befehlszeilen-Tools installiert sind, indem Sie Folgendes ausführen. 

Ältere Versionen von OSX & XCode hatten die Installation für Befehlszeilentools im XCode IDE selbst. In OSX Mavericks musste ich die folgenden Befehle ausführen, um meine Befehlszeilentools zu korrigieren, sodass ich Rubygems mit systemeigenen Erweiterungen installieren konnte.

$ Sudo xcode-select --install
$ xcode-select --print-path
/Library/Developer/CommandLineTools
17
Chris

Unter OSX-10.9.5 hat xcode-select --install für mich nicht funktioniert. Es wurde gestartet und bat um Bestätigung der Lizenz, gab jedoch an, dass die Software nicht gefunden werden konnte.

Am Ende besuchte ich: https://developer.Apple.com/downloads/index.action#, lud die entsprechende CommandLineTools dmg für OSX-10.9.5 herunter, installierte die Tools manuell vom Paket und setzte dann: xcode-select --switch=/Library/Developer/CommandLineTools, um den Pfad festzulegen.

Danach funktionierte alles gut. 

0
James B. Byrne