安装了DevKit并重新运行ffi install ... .got this as 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
_________________________________________________________________________________
不确定如何处理此问题。请帮助。
答案 0 :(得分:15)
版本1.0.10在Windows上编译时出现问题。
您可以使用1.0.9
gem install ffi --version='1.0.9'
答案 1 :(得分:12)
sudo apt-get install libffi-dev
这对我有用
答案 2 :(得分:11)
gem install ffi因gem尝试构建libffi的捆绑副本而失败,由于假设/ usr / bin / env存在且过旧的libffi副本而无效。
但是,您可以针对系统libffi构建ffi gem - 安装软件包:
apt install clang make ruby-dev libffi-dev
之后ffi gem应该构建:
gem install ffi
答案 3 :(得分:7)
请注意,如果您的捆绑包不断尝试外出并获取最新版本,那么安装1.0.9版本是不够的。在你的gemfile中你还要放:
gem 'ffi', '1.0.9'
这应该满足任何宝石要求它的依赖性,让你起床并运行。
答案 4 :(得分:5)
按照上述步骤操作时,可能会产生以下消息。
$ 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 :(得分:5)
对我来说,修复程序按此顺序运行。我不确定所有相关内容,但它确实有效:
gem install ffi --version '1.0.9'
以上失败,但随后我可以成功运行:
gem install bundler
......随后:
gem install ffi
...获得最新版本(编写本文时为1.6.0)并成功安装。
答案 6 :(得分:4)
安装'osx-gcc-installer'对我有用:(osx 10.8)
答案 7 :(得分:3)
你需要这个,
apt-get install ruby2.2-dev
答案 8 :(得分:3)
对我有帮助:
sudo apt install build-essential
Debian 9
Ruby 2.3.3
答案 9 :(得分:2)
从another post复制:
正如Issue with installing ImageMagick and rmagick on Mountain Lion中所述,ffi似乎已配置为查找“gcc-4.2”,因此,一旦我更新了Apple command line tools(我可能需要或可能不需要这样做),我创建了一个符号链接,使ffi安装配置更加快乐:
sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2
答案 10 :(得分:0)
将DevKit放在PATH前面,然后从Windows命令提示符重新安装。
答案 11 :(得分:0)
我遇到了同样的问题。就我而言,我没有安装DevKit,可以找到:http://rubyinstaller.org/downloads/。安装DevKit之后,只需按照https://github.com/oneclick/rubyinstaller/wiki/development-kit指令操作,最后启动并运行。
答案 12 :(得分:0)
我必须安装automake
才能让它正常运行。适用于mac OSX和Ubuntu(CI机器)。
答案 13 :(得分:0)
在MacOS(Catalina)上,运行brew install libtool
首先为我解决了这个问题。
答案 14 :(得分:0)
对我来说,这通常有效
gem install ffi -- --disable-system-libffi
答案 15 :(得分:0)
这对我有用
gem install ffi -- --disable-system-libffi
在 Ubuntu 20.04 (WSL) 上