ОШИБКА: Ошибка при установке ffi: ОШИБКА: Не удалось создать собственное расширение gem

Получил DevKit установленный и перезапустил установку ffi....gott это как результат:

C:\Documents and Settings\******>gem install ffi
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing ffi:
        ERROR: Failed to build gem native extension.

        C:/Ruby192/bin/ruby.exe extconf.rb
checking for ffi.h... no
checking for ffi.h in /usr/local/include... no
checking for rb_thread_blocking_region()... yes
checking for ruby_thread_has_gvl_p()... yes
checking for ruby_native_thread_p()... yes
checking for rb_thread_call_with_gvl()... yes
creating extconf.h
creating Makefile
make
C:/Ruby192/bin/ruby -e "puts 'EXPORTS', 'Init_ffi_c'"  > ffi_c-i386-mingw32.def
gcc -I. -IC:/Ruby192/include/ruby-1.9.1/i386-mingw32 -I/C/Ruby192/include/ruby-1
.9.1/ruby/backward -I/C/Ruby192/include/ruby-1.9.1 -I. -DRUBY_EXTCONF_H=\"extcon
f.h\"    -O3 -g -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -
Wwrite-strings -Wno-missing-field-initializers -Wno-long-long -Wno-declaration-a
fter-statement   -o AbstractMemory.o -c AbstractMemory.c
In file included from AbstractMemory.c:28:0:
compat.h:65:20: warning: extra tokens at end of #ifndef directive
compat.h:69:24: warning: extra tokens at end of #ifndef directive
In file included from AbstractMemory.h:29:0,
                 from AbstractMemory.c:29:
Types.h:68:17: fatal error: ffi.h: No such file or directory
compilation terminated.
make: *** [AbstractMemory.o] Error 1 

Gem files will remain installed in C:/Ruby192/lib/ruby/gems/1.9.1/gems/ffi-1.0.1
0 for inspection.
Results logged to C:/Ruby192/lib/ruby/gems/1.9.1/gems/ffi-1.0.10/ext/ffi_c/gem_m
ake.out
_________________________________________________________________________________

Не знаете, как справиться с этой проблемой. Незлая помощь.

Ответ 1

Версия 1.0.10 имеет проблемы с компиляцией окон.

Вы можете использовать 1.0.9

gem install ffi --version='1.0.9'

Ответ 2

sudo apt-get install libffi-dev

Это сработало для меня

Ответ 3

Обратите внимание, что установка версии 1.0.9 не будет достаточной, если ваш поставщик продолжит пытаться выйти и захватить последнюю версию. В вашем gemfile вы также захотите поставить:

gem 'ffi', '1.0.9'

Это должно удовлетворять зависимости от того, какой драгоценный камень просят об этом, и позволить вам встать и работать.

Ответ 4

Gem install ffi терпит неудачу из-за того, что камень пытается создать объединенную копию libffi, которая не работает из-за допущений, что /usr/bin/env существует и слишком старая копия libffi.

Тем не менее, вы можете построить ffi gem против системы libffi - установить пакеты:

apt install clang make ruby-dev libffi-dev

После этого ffi gem должен построить:

gem install ffi

Ответ 5

при выполнении вышеуказанных шагов может возникнуть следующее сообщение.

$ bundle install
Fetching source index for https://rubygems.org/
You have requested:
ffi = 1.0.9

The bundle currently has ffi locked at 1.0.11.
Try running 'bundle update ffi'

В этом случае вы можете запустить команду "bundle update ffi", и ошибка будет решена.

Ответ 6

Для меня исправление выполнялось в этом порядке. Я не уверен, что все было уместно, но это сработало:

gem install ffi --version '1.0.9'

Вышеуказанное не удалось, но затем я смог успешно выполнить:

gem install bundler

... и впоследствии:

gem install ffi

... который получил последнюю версию (1.6.0 на момент написания) и успешно установил ее.

Ответ 8

Скопировано из другого сообщения:

Как указано в выпуске с установкой ImageMagick и rmagick на Mountain Lion, ffi, похоже, настроен на поиск "gcc-4.2", поэтому, как только я обновил свои инструменты командной строки Apple (что мне может или не нужно делать), я создал символическую ссылку, чтобы сделать конфигурацию конфигурации ffi счастливой:

sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2

Ответ 9

ты нуждаешься в этом,

apt-get install ruby2.2-dev

Ответ 10

Поместите DevKit перед вашим PATH и снова установите его из командной строки Windows.

Ответ 12

Мне пришлось установить automake чтобы заставить его работать. Работал как на Mac OSX, так и на Ubuntu (машина CI).