Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';安装ffi ruby gem时找不到ffi.h_Ruby_Rubygems_Ffi_Compass - Fatal编程技术网

Can';安装ffi ruby gem时找不到ffi.h

Can';安装ffi ruby gem时找不到ffi.h,ruby,rubygems,ffi,compass,Ruby,Rubygems,Ffi,Compass,Ruby版本2.2.4p230 RubyGem版本2.7.2 已安装Ruby-devel和lib64ffi-devel 使用64位OpenMandriva 3.0、urpmi和rpmdrake 目标:安装compass,但首先需要gem ffi 在过去的两天里,我一直在互联网上苦苦搜寻,我真的很难受。。。我不可能安装较早版本的ruby,因为它依赖于较旧的ncurses。我觉得换掉ncurses会打开一罐恶心的虫子 然而。。。我也完全接受compass的替代方案,其中config.rb项目文件可以

Ruby版本2.2.4p230

RubyGem版本2.7.2

已安装Ruby-devel和lib64ffi-devel

使用64位OpenMandriva 3.0、urpmi和rpmdrake

目标:安装compass,但首先需要gem ffi

在过去的两天里,我一直在互联网上苦苦搜寻,我真的很难受。。。我不可能安装较早版本的ruby,因为它依赖于较旧的ncurses。我觉得换掉ncurses会打开一罐恶心的虫子

然而。。。我也完全接受compass的替代方案,其中config.rb项目文件可以以某种方式进行移植/复制,以便compass和其他sass编译器都可以运行。(这是为了工作,我们不会很快更换sass生成器)

/usr/share/gems/gems/ffi-1.9.18/ext/ffi_c完全存在,该目录中有一个ffi.c文件,但在附近找不到任何ffi.h文件。在一个绝望的时刻,我触摸了该目录中的ffi.h,当我运行gem install时,它将其删除我会试着复印一份别人的LIB,看看这是否有效

基本上,任何方法都可以在不破坏我的其他软件包的情况下让它正常工作。我不使用ruby做任何事情,只使用指南针

以下是输出:

# sudo gem install ffi
Building native extensions. This could take a while...
ERROR:  Error installing ffi:
    ERROR: Failed to build gem native extension.

current directory: /usr/share/gems/gems/ffi-1.9.18/ext/ffi_c
/usr/bin/ruby -r ./siteconf20171110-17988-1lodsok.rb extconf.rb
checking for ffi.h... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib64
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/usr/bin/$(RUBY_BASE_NAME)
    --with-ffi_c-dir
    --without-ffi_c-dir
    --with-ffi_c-include
    --without-ffi_c-include=${ffi_c-dir}/include
    --with-ffi_c-lib
    --without-ffi_c-lib=${ffi_c-dir}/lib64
    --with-libffi-config
    --without-libffi-config
    --with-pkg-config
    --without-pkg-config
/usr/share/ruby/mkmf.rb:456:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
    from /usr/share/ruby/mkmf.rb:587:in `try_cpp'
    from /usr/share/ruby/mkmf.rb:1060:in `block in have_header'
    from /usr/share/ruby/mkmf.rb:911:in `block in checking_for'
    from /usr/share/ruby/mkmf.rb:351:in `block (2 levels) in postpone'
    from /usr/share/ruby/mkmf.rb:321:in `open'
    from /usr/share/ruby/mkmf.rb:351:in `block in postpone'
    from /usr/share/ruby/mkmf.rb:321:in `open'
    from /usr/share/ruby/mkmf.rb:347:in `postpone'
    from /usr/share/ruby/mkmf.rb:910:in `checking_for'
    from /usr/share/ruby/mkmf.rb:1059:in `have_header'
    from extconf.rb:16:in `<main>'

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /usr/lib64/gems/ruby/ffi-1.9.18/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /usr/share/gems/gems/ffi-1.9.18 for inspection.
Results logged to /usr/lib64/gems/ruby/ffi-1.9.18/gem_make.out
#sudo gem安装ffi
构建本机扩展。这可能需要一段时间。。。
错误:安装ffi时出错:
错误:无法生成gem本机扩展。
当前目录:/usr/share/gems/gems/ffi-1.9.18/ext/ffi\u c
/usr/bin/ruby-r./siteconf20171110-17988-1lodsok.rb extconf.rb
正在检查ffi.h.。**extconf.rb失败***
由于某些原因无法创建Makefile,可能缺少必要的
库和/或标题。有关详细信息,请查看mkmf.log文件。您可能需要配置选项。
提供的配置选项:
--使用opt dir
--不带opt dir
--选择包含
--不带opt include=${opt dir}/include
--使用opt lib
--不带opt lib=${opt dir}/lib64
--用make prog
--没有make prog
--srcdir=。
--库尔迪尔
--ruby=/usr/bin/$(ruby\u BASE\u NAME)
--带-ffi_c-dir
--不带-ffi_c-dir
--带-ffi_c-include
--不带-ffi_c-include=${ffi_c-dir}/include
--带-ffi_c-lib
--不带-ffi_c-lib=${ffi_c-dir}/lib64
--使用libffi配置
--没有libffi配置
--使用pkg配置
--没有pkg配置
/usr/share/ruby/mkmf.rb:456:“try_do”中:编译器未能生成可执行文件。(运行时错误)
您必须首先安装开发工具。
from/usr/share/ruby/mkmf.rb:587:in'try_cpp'
from/usr/share/ruby/mkmf.rb:1060:in`block in have_header'
from/usr/share/ruby/mkmf.rb:911:in'block-in-checking\u'
from/usr/share/ruby/mkmf.rb:351:in'block(2层)in
from/usr/share/ruby/mkmf.rb:321:in'open'
from/usr/share/ruby/mkmf.rb:351:in'block in delay'
from/usr/share/ruby/mkmf.rb:321:in'open'
from/usr/share/ruby/mkmf.rb:347:in“推迟”
from/usr/share/ruby/mkmf.rb:910:in'checking_'
from/usr/share/ruby/mkmf.rb:1059:in'have_header'
来自extconf.rb:16:in`'
要了解此扩展未能编译的原因,请检查mkmf.log,该日志可在此处找到:
/usr/lib64/gems/ruby/ffi-1.9.18/mkmf.log
extconf失败,退出代码1
Gem文件将继续安装在/usr/share/gems/gems/ffi-1.9.18中以供检查。
结果记录到/usr/lib64/gems/ruby/ffi-1.9.18/gem_make.out

感谢您的帮助

您的错误消息显示:

/usr/share/ruby/mkmf.rb:456:“try_do”中:编译器未能生成可执行文件。(运行时错误) 您必须首先安装开发工具

这就是解决问题的方法:

xcode-select --install
(但事先确保
xcode-select-p
正在将路径返回到稳定的xcode版本,如xcode 10)

另见