作为上下文,它位于具有防火墙的远程服务器上。我正在通过代理设置环境。我有ruby 1.8.7。当我尝试gem安装..

sudo gem install --http-proxy <host address>:<port> json

我得到以下错误:

Building native extensions.  This could take a while...
ERROR:  Error installing json:
        ERROR: Failed to build gem native extension.

/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /usr/lib/ruby/ruby.h

Gem files will remain installed in /usr/lib64/ruby/gems/1.8/gems/json-1.8.1 for inspection.
Results logged to /usr/lib64/ruby/gems/1.8/gems/json-1.8.1/ext/json/ext/generator/gem_make.out

因为我不确定是什么问题,我谷歌了一下,找到了这些

gem安装:构建gem本地扩展失败(找不到头文件)-这里的说明似乎是特定于正在安装的gem。 如何安装json gem -未能建立gem本地扩展这似乎是略有不同的错误。

有提示吗?谢谢!


当前回答

大多数投票的解决方案在我的机器上不起作用(linux mint 18.04)。 仔细一看,我发现g++不见了。 解决与

Sudo apt-get安装g++

其他回答

我在使用cygwin运行以下命令时遇到了类似的问题:

$ gem install rerun

我通过安装以下cygwin包来解决这个问题:

ruby-devel libffi-devel gcc核心 gcc-g + + 使 automake1.15

在Mac 10.14上,头文件似乎没有安装在正确的位置。而不是像其他修复一样改变路径,我能够运行这个:

open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

按照说明,它为我解决了这个问题。

在你按照Joki回答的建议(下面)和如果:

你有MacOS 10.14.6 在/Library/Developer/CommandLineTools/ sdk /目录下有文件夹 MacOSX10.14 MacOSX.sdk(象征性的)。sdk, MacOSX10.15.sdk MacOSX10.15移动。SDK到任何地方(需要管理特权) 删除符号链接(需要管理员权限) 在/Library/Developer/CommandLineTools/ sdk /目录下创建另一个指向MacOSX10.14的符号链接。SDK文件夹使用(需要管理权限) sudo ln -s /Library/Developer/CommandLineTools/ sdk /MacOSX10.14.使用实例sdk MacOSX.sdk 现在你可以跟着Joki的答案走了

警告! 如果你移动MacOSX10.15。sdk文件夹到/Library/Developer/CommandLineTools/ sdk /再次,命令

ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'

将显示MacOSX10.15。sdk文件夹像默认再次,现在我不知道如何修复它!我的建议,压缩文件夹,并把原来的文件夹,直到修复将可用。

现代更新,如mimoralea所述:

如果你正在使用ruby 2.0或2.2(谢谢@patrick-davey)。 安装ruby2.0-dev 安装ruby2.2-dev Sudo apt-get安装ruby2.3-dev

或者,一般来说:

安装ruby-dev 或 sudo apt-get install ruby ' ruby -e '将RUBY_VERSION[/\d+\.\d+/]' ' -dev


你发布的第一个链接正是你的情况:没有安装ruby开发环境。需要开发环境来编译ruby扩展,这些扩展大多是用c编写的,Proxy与这个问题无关:下载一切都很好,只是编译失败。

我建议你在目标机器上安装ruby-dev (ruby-devel用于基于rpm的发行版)包。

可能还需要GCC包。

Try:

$ sudo apt-get install ruby-dev

或者,对于Redhat发行版:

$ sudo yum install ruby-devel

或者,对于[open]SuSE:

$ sudo zypper install ruby-devel

在Fedora 21及更高版本中,只需打开一个终端,以根用户身份安装Ruby Development文件。

dnf install ruby-devel