У меня проблемы с установкой пакета в одном проекте, над которым я работаю в Rails 4.2.10. Когда я связываю, я получаю следующую ошибку:
Произошла ошибка при установке ffi (1.9.25), и Bundler не может продолжить работу.
Перед объединением убедитесь, что gem install ffi -v '1.9.25' завершился успешно.
In Gemfile:
s3_direct_upload was resolved to 0.1.6, which depends on
sass-rails was resolved to 5.0.7, which depends on
sass was resolved to 3.6.0, which depends on
sass-listen was resolved to 4.0.0, which depends on
rb-inotify was resolved to 0.9.10, which depends on
ffi
Когда я запускаю gem install ffi -v '1.9.25', также возникает ошибка:
Building native extensions. This could take a while...
ERROR: Error installing ffi:
ERROR: Failed to build gem native extension.
current directory: /xxx/xxx/.rvm/gems/ruby-2.5.3/gems/ffi-1.9.25/ext/ffi_c
/xxx/xxx/.rvm/rubies/ruby-2.5.3/bin/ruby -r ./siteconf20190110-6923-1jimorr.rb 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_closure_alloc()... no
checking for ffi_raw_call()... no
checking for shlwapi.h... no
checking for ruby/thread.h... yes
checking for rb_thread_blocking_region()... no
checking for rb_thread_call_with_gvl()... yes
checking for rb_thread_call_without_gvl()... yes
creating extconf.h
creating Makefile
current directory: /xxx/xxx/.rvm/gems/ruby-2.5.3/gems/ffi-1.9.25/ext/ffi_c
make "DESTDIR = " clean
current directory: /xxx/xxx/.rvm/gems/ruby-2.5.3/gems/ffi-1.9.25/ext/ffi_c
make "DESTDIR = "
Configuring libffi
clang: error: unsupported option '-print-multi-os-directory'
clang: error: no input files
cd "/xxx/xxx/.rvm/gems/ruby-2.5.3/gems/ffi-1.9.25/ext/ffi_c/libffi-x86_64-darwin18" && /Volumes/Macintosh HD/Applications/Xcode.app/Contents/Developer/usr/bin/make
/bin/sh: /Volumes/Macintosh: No such file or directory
make: *** ["/xxx/xxx/.rvm/gems/ruby-2.5.3/gems/ffi-1.9.25/ext/ffi_c/libffi-x86_64-darwin18"/.libs/libffi_convenience.a] Error 127
make failed, exit code 2
Gem files will remain installed in /xxx/xxx/.rvm/gems/ruby-2.5.3/gems/ffi-1.9.25 for inspection.
Results logged to /xxx/xxx/.rvm/gems/ruby-2.5.3/extensions/x86_64-darwin-18/2.5.0/ffi-1.9.25/gem_make.out
Я пробовал много решений в Интернете, но не могу решить эту проблему. Кажется, проблема связана с моей системой, поскольку я новичок в команде, и другие разработчики не смогли мне помочь, поскольку у них нет такой проблемы.
Я нахожусь на Mac, и я попытался поместить в свой гем-файл ffi, но меня попросили удалить, так как главный гем-файл не содержит ffi. Есть другие решения?
Общий совет: вам не хватает некоторых собственных зависимостей (библиотек), и вам необходимо их установить. Вам не нужно изменять гем-файл, чтобы проверить, все ли в порядке, просто запустите gem install ffi -v '1.9.25' (так же, как и вы)
Как я показал выше, это всегда дает одну и ту же ошибку. Пожалуйста, проверьте последнюю часть моего вопроса
Это ошибка: `gem install ffi -v '1.9.25' Сборка собственных расширений. Это может занять некоторое время ... ОШИБКА: Ошибка при установке ffi: ОШИБКА: не удалось создать собственное расширение gem. `
да, я просто указываю, что это хороший способ его протестировать (а изменение гемфайла - нет)
Хорошо, но без решения этой проблемы я не могу выполнить пакет и работать над задачами, которые у меня есть. Я много чего пробовал :(
вы установили Mac Developer Tools? xcode-select --install
Да, он установлен У меня версия 10.0 (10A255)





Согласно libffi README, только GCC является протестированным компилятором для macOS. Вы используете Clang, который не поддерживает параметр командной строки -print-multi-os-directory.
Вам нужно либо пропатчить libffi для работы с Clang, либо использовать GCC.
Ваша ошибка - следующий Configuring libffi
clang: error: unsupported option '-print-multi-os-directory'
clang: error: no input files, потому что Clang (который является компилятором C, который вы используете) не поддерживает опцию '-print-multi-os-directory'.
Не могли бы вы проверить правильность установки инструментов командной строки X-Code, выполнив следующую команду? xcode-select --install
Также не могли бы вы попробовать brew install automake autoconf libtool libffi для установки необходимых зависимостей?
xcode-select: error: инструменты командной строки уже установлены, используйте «Обновление программного обеспечения» для установки обновлений. Все уже установлено. Brew тоже установил.
Установлены ли у вас automake autoconf libtool и libffi?
Да, все установлено. Предупреждение: automake 1.16.1_1 уже установлен и обновлен. Чтобы переустановить 1.16.1_1, запустите brew reinstall automake. Предупреждение: autoconf 2.69 уже установлен и обновлен. Чтобы переустановить 2.69, запустите brew reinstall autoconf. Предупреждение: libtool 2.4. .6_1 уже установлен и обновлен. Чтобы переустановить 2.4.6_1, запустите brew reinstall libtool. Предупреждение: libffi 3.2.1 уже установлена и обновлена. Чтобы переустановить 3.2.1, запустите brew reinstall libffi.
Тогда, возможно, вам придется попробовать GCC с brew install gcc. Еще инструкция по настройке: stackoverflow.com/questions/28970935/…
Извините, я не смог вам помочь, я где-то читал, что использование другого может решить вашу проблему.
Мне удалось успешно установить ffi с помощью следующей команды:
LDFLAGS = "-L/usr/local/opt/libffi/lib" PKG_CONFIG_PATH = "/usr/local/opt/libffi/lib/pkgconfig" gem install ffi -v '1.9.25'
Нашел на какой-то японской доске
Это сработало для меня в OSX 10.15.2 с Ruby 2.7.0 и ffi 1.11.3.
см. ответы в: stackoverflow.com/questions/7852566/… может что нибудь поможет