web-dev-qa-db-ja.com

エラー:ffiのインストールエラー:エラー:gemネイティブ拡張のビルドに失敗しました

DevKitをインストールして、ffi install….gotを出力として再実行します。

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
_________________________________________________________________________________

この問題への対処方法がわかりません。親切に助けてください。

18
user1007520

バージョン1.0.10には、Windowsでのコンパイルに関する問題があります。

1.0.9を使用できます

gem install ffi --version='1.0.9'
16
tommasop

Gemのインストールffiは、gemがlibffiのバンドルされたコピーを作成しようとしているために失敗します。これは、/ usr/bin/envが存在し、古すぎるlibffiコピーであるという前提のために機能しません。

ただし、システムlibffiに対してffi gemをビルドできます-パッケージをインストールします。

apt install clang make Ruby-dev libffi-dev

その後、ffi gemがビルドされます。

gem install ffi
13
ElS arekh
Sudo apt-get install libffi-dev

これは私のために働いた

12
sahilbathla

バンドラーが最新バージョンを入手し続けようとする場合、バージョン1.0.9をインストールするだけでは十分ではないことに注意してください。あなたのgemfileにあなたも置くことになるでしょう:

gem 'ffi', '1.0.9'

これは、gemが要求する依存関係を満たし、起動して実行できるようにする必要があります。

7
DVG

私にとって、修正はこの順序で実行されていました。何が関連していたのかはわかりませんが、うまくいきました:

gem install ffi --version '1.0.9'

上記は失敗しましたが、私は正常に実行できました:

gem install bundler

...そしてその後:

gem install ffi

...最新バージョン(これを書いている時点では1.6.0)を取得して正常にインストールしました。

6
Grinn

上記の手順を実行すると、次のメッセージが表示される場合があります。

$ 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」コマンドを実行すると、エラーが解決します。

5
maniempire

「osx-gcc-installer」のインストールは私にとってはうまくいきました:(osx 10.8)

https://github.com/kennethreitz/osx-gcc-installer/downloads

4
wantrapreneur

あなたはこれを必要とします、

apt-get install Ruby2.2-dev
3
Cosmo Arun

別の投稿からコピーされました

ImageMagickとrmagickをMountain Lionにインストールする際の問題 で述べたように、ffiは 'gcc-4.2'を探すように構成されているようです。 Appleコマンドラインツール (これが必要かどうかにかかわらず)、ffiインストール構成を満足させるためのシンボリックリンクを作成しました。

Sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2
2
David Vezzani

PATHの前にDevKitを置き、Windowsコマンドプロンプトから再度インストールします。

0
konyak

同じ問題が発生しました。私の場合、DevKitをインストールしていません。次の場所にあります http://rubyinstaller.org/downloads/ 。 DevKitをインストールしたら、次の手順 https://github.com/oneclick/rubyinstaller/wiki/development-kit を実行するだけで、最終的に起動します。

0
Erwin Kaddy

動作させるためにautomakeをインストールする必要がありました。 Mac OSXとUbuntu(CIマシン)の両方で動作しました。