Gem install ffi Не удалось создать собственное расширение gem

У меня проблемы с установкой пакета в одном проекте, над которым я работаю в 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

Я пробовал много решений в Интернете, но не могу решить эту проблему. Кажется, проблема связана с моей системой, поскольку я новичок в команде, и другие разработчики не смогли мне помочь, поскольку у них нет такой проблемы.

см. ответы в: stackoverflow.com/questions/7852566/… может что нибудь поможет

mrzasa 10.01.2019 11:34

Я нахожусь на Mac, и я попытался поместить в свой гем-файл ffi, но меня попросили удалить, так как главный гем-файл не содержит ffi. Есть другие решения?

Jakub 10.01.2019 11:45

Общий совет: вам не хватает некоторых собственных зависимостей (библиотек), и вам необходимо их установить. Вам не нужно изменять гем-файл, чтобы проверить, все ли в порядке, просто запустите gem install ffi -v '1.9.25' (так же, как и вы)

mrzasa 10.01.2019 11:53

Как я показал выше, это всегда дает одну и ту же ошибку. Пожалуйста, проверьте последнюю часть моего вопроса

Jakub 10.01.2019 11:56

Это ошибка: `gem install ffi -v '1.9.25' Сборка собственных расширений. Это может занять некоторое время ... ОШИБКА: Ошибка при установке ffi: ОШИБКА: не удалось создать собственное расширение gem. `

Jakub 10.01.2019 11:58

да, я просто указываю, что это хороший способ его протестировать (а изменение гемфайла - нет)

mrzasa 10.01.2019 12:06

Хорошо, но без решения этой проблемы я не могу выполнить пакет и работать над задачами, которые у меня есть. Я много чего пробовал :(

Jakub 10.01.2019 12:57

вы установили Mac Developer Tools? xcode-select --install

davegson 10.01.2019 13:05

Да, он установлен У меня версия 10.0 (10A255)

Jakub 10.01.2019 13:11
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
11
9
5 048
3

Ответы 3

Согласно 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 тоже установил.

Jakub 10.01.2019 14:16

Установлены ли у вас automake autoconf libtool и libffi?

Armand Fardeau 10.01.2019 14:27

Да, все установлено. Предупреждение: 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.

Jakub 10.01.2019 15:04

Тогда, возможно, вам придется попробовать GCC с brew install gcc. Еще инструкция по настройке: stackoverflow.com/questions/28970935/…

Armand Fardeau 10.01.2019 16:01

Извините, я не смог вам помочь, я где-то читал, что использование другого может решить вашу проблему.

Armand Fardeau 10.01.2019 16:31

Мне удалось успешно установить 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.

turboladen 04.01.2020 21:59

Другие вопросы по теме