ERROR: Error installing ffi: ERROR: Failed to buil

2019-01-25 05:52发布

Got the DevKit installed and re-ran the ffi install….got this as an output:

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
_________________________________________________________________________________

Not sure how to deal with this issue. Kindly help.

标签: ruby gem ffi
12条回答
萌系小妹纸
2楼-- · 2019-01-25 05:54

Version 1.0.10 has issues compiling on windows.

You can use the 1.0.9

gem install ffi --version='1.0.9'
查看更多
爷、活的狠高调
3楼-- · 2019-01-25 06:00

Copied from another post:

As stated in Issue with installing ImageMagick and rmagick on Mountain Lion, ffi appears to be configured to look for 'gcc-4.2', so once I updated my Apple command line tools (which I may or may not have needed to do), I created a symbolic link to make the ffi install configuration happy:

sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2
查看更多
祖国的老花朵
4楼-- · 2019-01-25 06:02

The gem install ffi fails due to the gem trying to build a bundled copy of libffi, which does not work due to assumptions that /usr/bin/env exists and too old libffi copy.

However, you can build the ffi gem against the system libffi - install the packages:

apt install clang make ruby-dev libffi-dev

After that the ffi gem should build:

gem install ffi
查看更多
家丑人穷心不美
5楼-- · 2019-01-25 06:02

I had to install automake to get it working. Worked on both mac OSX as well as Ubuntu (CI machine).

查看更多
够拽才男人
6楼-- · 2019-01-25 06:06

Note that installing version 1.0.9 isn't going to be enough if your bundler keeps trying to go out and grab the latest version. In your gemfile you'll also want to put:

gem 'ffi', '1.0.9'

This should satisfy the dependency for whatever gem is asking for it and let you get up and running.

查看更多
姐就是有狂的资本
7楼-- · 2019-01-25 06:12

when the above steps are followed, it might results the following message.

$ 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`

In that case, you can run the 'bundle update ffi' command and the error will be solved.

查看更多
登录 后发表回答