Gem install ffi Не удалось собрать собственное расширение для gem - PullRequest
0 голосов
/ 10 января 2019

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

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

Ответы [ 3 ]

0 голосов
/ 10 января 2019

Ваша ошибка следующая 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 для установки необходимых зависимостей?

0 голосов
/ 29 мая 2019

Мне удалось успешно установить ffi с помощью следующей команды:

LDFLAGS="-L/usr/local/opt/libffi/lib" PKG_CONFIG_PATH="/usr/local/opt/libffi/lib/pkgconfig" gem install ffi -v '1.9.25'

Найден на японской доске

0 голосов
/ 10 января 2019

Согласно README libffi, только GCC является протестированным компилятором на macOS. Вы используете Clang, который не поддерживает параметр командной строки -print-multi-os-directory.

Вам нужно либо пропатчить libffi для работы с Clang, либо использовать GCC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...