Gem 安装错误: 必须首先安装开发工具(Windows)

这个问题是针对 Windows 的

我尝试安装 gem‘ Sinatra-WebSocket’,但是当我运行 gem install sinatra-websocket时,我得到了这个错误..。

ERROR: Failed to build gem native extension

还有..。

C:/Ruby193/bin/ruby.exe extconf.rb
checking for main() in -lc... *** 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}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby193/bin/ruby
--with-thin_parser-dir
--without-thin_parser-dir
--with-thin_parser-include
--without-thin_parser-include=${thin_parser-dir}/include
--with-thin_parser-lib
--without-thin_parser-lib=${thin_parser-dir}/lib
--with-clib
--without-clib
C:/Ruby193/lib/ruby/1.9.1/mkmf.rb:381:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
from C:/Ruby193/lib/ruby/1.9.1/mkmf.rb:461:in `try_link0'
from C:/Ruby193/lib/ruby/1.9.1/mkmf.rb:476:in `try_link'
from C:/Ruby193/lib/ruby/1.9.1/mkmf.rb:619:in `try_func'
from C:/Ruby193/lib/ruby/1.9.1/mkmf.rb:845:in `block in have_library'
from C:/Ruby193/lib/ruby/1.9.1/mkmf.rb:790:in `block in checking_for'
from C:/Ruby193/lib/ruby/1.9.1/mkmf.rb:284:in `block (2 levels) in postpone'
from C:/Ruby193/lib/ruby/1.9.1/mkmf.rb:254:in `open'
from C:/Ruby193/lib/ruby/1.9.1/mkmf.rb:284:in `block in postpone'
from C:/Ruby193/lib/ruby/1.9.1/mkmf.rb:254:in `open'
from C:/Ruby193/lib/ruby/1.9.1/mkmf.rb:280:in `postpone'
from C:/Ruby193/lib/ruby/1.9.1/mkmf.rb:789:in `checking_for'
from C:/Ruby193/lib/ruby/1.9.1/mkmf.rb:840:in `have_library'
from extconf.rb:4:in `<main>'

下面是 C:\Ruby193\lib\ruby\gems\1.9.1\gems\thin-1.6.3\ext\thin_parser中的 mkmf文件:

"gcc -o conftest -IC:/Ruby193/include/ruby-1.9.1/i386-mingw32 -IC:/Ruby193/include/ruby-1.9.1/ruby/backward -IC:/Ruby193/include/ruby-1.9.1 -I. -DFD_SETSIZE=2048  -DFD_SETSIZE=2048  -O3 -fno-omit-frame-pointer -g -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration conftest.c  -L. -LC:/Ruby193/lib -L.   -march=i486   -lmsvcrt-ruby191  -lshell32 -lws2_32 -limagehlp -lshlwapi  "
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: #include <winsock2.h>
4: #include <windows.h>
5: int main(int argc, char **argv)
6: {
7:   return 0;
8: }
/* end */

我用的是 Windows 7。

为什么我会得到这个错误? 有一行说“无法创建 Makefile...”,但是这有关系吗?

153981 次浏览

对于 Mac 电脑来说:

你跑过:

xcode-select --install

要安装 Xcode Developer 工具吗?

Rubyinstaller 现在提供了包含 devkit 的安装。

听起来你错过了 Ruby 的 Devtools。

你可以在这里得到它们: http://rubyinstaller.org/downloads/只需向下滚动到“开发工具包”。

下载并解压缩到您想要的任何地方。在命令提示符下打开文件夹并运行 ruby dk.rb init。这将创建一个配置文件,详细说明您的 Ruby 安装。在继续确认 Ruby 安装的路径是否正确之前,请检查此配置文件。

现在运行 ruby dk.rb install。这将安装开发工具包。

重新启动命令提示符,并尝试再次安装 gem。

我在 MacOS Mojave (10.14.1)上有这个问题。通过 Homebrew 安装最新的 Ruby 并设置一些 env 变量解决了这个问题:

(抄自 brew info ruby指令)

export PATH="/usr/local/opt/ruby/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/ruby/lib"
export CPPFLAGS="-I/usr/local/opt/ruby/include"
export PKG_CONFIG_PATH="/usr/local/opt/ruby/lib/pkgconfig"

如果你使用的是 Mac OS 10.14(Mojave) ,试试看

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

这要归功于罗伊 · 黄 参考文献: < a href = “ https://stackoverflow. com/a/55732339/1598551”> https://stackoverflow.com/a/55732339/1598551

这意味着您没有安装编译器工具。对于 mac xcode-select --install安装它们。对于 Linux 或其他系统,您可以使用包管理器,例如 apt install cmake应该为具有 apt 包管理器的系统安装必要的构建工具。

对 Mac 来说也是如此:

如果您的系统上还没有安装 Xcode dev 工具(可能您最近升级了操作系统或 Xcode) ,那么运行 xcode-select --install

否则,更具侵入性的修复方法是使用 --switch标志设置活动目录

sudo xcode-select --switch /

来自 xcode-select 手册:

  -s <path>, --switch <path>
Sets the active developer directory to the given path, for example
/Applications/Xcode-beta.app. This command must be run with
superuser permissions (see sudo(8)), and will affect all users on
the system. To set the path without superuser permissions or only
for the current shell session, use the DEVELOPER_DIR environment
variable instead (see ENVIRONMENT).

如果您已经安装了 Xcode,那么可能存在不同的问题,在这种情况下,请参阅本文 安装带有本地扩展 Gem: : Ext: : BuildError: ERROR: 构建失败

如果你在 Mac 上并且最近升级了你的 Xcode 工具,运行以下命令:

sudo xcode-select --install
sudo xcodebuild -license

我在 Ubuntu 18.04上也遇到了同样的问题:

$ sudo apt-get install ubuntu-dev-tools

如果安装了多个版本的 Xcode,请确保从最新的命令行工具中选择命令行工具,否则 gem 将无法找到它们。

以下是我对 Mac OSX 的解决方案:

在终端应用程序中:

步骤1: 确保通过以下脚本安装了 Xcode 开发人员工具:

xcode-select --install

第二步: 通过脚本升级你的红宝石:

brew install ruby

第三步: 再试一次。

我的问题是我升级到了 macOS Big Sur,不知怎么的,命令行工具已经过时了。

我知道这一点是因为,当我尝试运行 brew install rbenv时,我收到了这个错误:

Error: Your Command Line Tools (CLT) does not support macOS 11.
It is either outdated or was modified.
Please update your Command Line Tools (CLT) or delete it if no updates are available.
Update them from Software Update in System Preferences or run:
softwareupdate --all --install --force


If that doesn't show you any updates, run:
sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select --install


Alternatively, manually download them from:
https://developer.apple.com/download/more/.

所以我跑了

sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select --install

完成后,宝石安装成功。

我最近升级到了 MAC OS,并且在运行 gem install 时出现了错误..。

解决方案是完全删除 CLT 并再次运行安装。

可选项:

啤酒升级

跑步:

Sudo rm-rf/Library/Developer/CommandLineTools

Sudo xcode-select —— install

尝试了所有以前的答案,但没有一个有效。

取而代之的是:

brew install cocoapods

在运行了 $ brew install coreutils (信贷)之后-我跟随了 Evan Hoffman 的旧的 文章,安装了主厨(嵌入了 Ruby 的最新稳定版本)

$ curl -L https://www.getchef.com/chef/install.sh | sudo bash

然后我可以安装任何所需的 gem,现在已经安装了所有必需的开发工具;

$ sudo gem install -V <gem>

你在大索尔的英里数可能不同

实际上,真正的问题是当一个人从一个主要版本的 macOS 升级到另一个版本并安装一个更新的 Xcode 时。

cd /Library/Developer/CommandLineTools
ls -l SDKs/
total 0
lrwxr-xr-x  1 root  wheel   14 Feb  4 21:41 MacOSX.sdk -> MacOSX11.1.sdk
drwxr-xr-x  8 root  wheel  256 Feb  4 21:43 MacOSX10.15.sdk
drwxr-xr-x  7 root  wheel  224 Feb  4 21:43 MacOSX11.1.sdk

在进入苹果的开发者网站并手动下载 CLI 工具之后,下面是文件夹中包含的内容:

$> ls -l SDKs/
lrwxr-xr-x  1 root  wheel   14 May  4 18:10 MacOSX.sdk -> MacOSX11.3.sdk
drwxr-xr-x  8 root  wheel  256 May  4 18:10 MacOSX10.15.sdk
drwxr-xr-x  7 root  wheel  224 Feb  4 21:43 MacOSX11.1.sdk
drwxr-xr-x  7 root  wheel  224 Mar 16 10:03 MacOSX11.3.sdk
lrwxr-xr-x  1 root  wheel   14 May  4 18:09 MacOSX11.sdk -> MacOSX11.3.sdk

您可能仍然需要重新设置 Xcode:

$> sudo xcode-select --reset
$> sudo xcodebuild -license

核实:

$> sudo xcode-select --print-path
/Applications/Xcode.app/Contents/Developer

最后,如果您仍然看到编译错误,您需要密切关注编译器错误是什么,并解决它。例如,在我的例子中,很简单,在 macOS 中,Big Sur clang 需要特殊的参数来添加声明(struct)。它被固定在:

export CFLAGS="-fdeclspec $CFLAGS"

如果你感到好奇(或者有人在网上寻找 Ruby 3.0. x 的答案) ,这就是错误所在:

/usr/local/Cellar/ruby/3.0.1/include/ruby-3.0.0/ruby/internal/fl_type.h:285:1: error: '__declspec' attributes are not enabled; use '-fdeclspec' or '-fms-extensions' to enable support for __declspec attributes

试试 rvm install ruby --latest

如果已经安装,请尝试 rvm reinstall ruby --latest

$ sudo gem install -V <gem>

我没问题。

Ubuntu 20.04.3 LTS (Focal Fossa)—— WSL

之前有一些依赖项需要解决,请尝试使用以下命令序列:

# if ERROR: 'Gem installation error: You have to install development tools first'
# BEFORE installing the dev-tools, install dependencies:
# if ERROR: 'GCC fatal error: stdio.h: No such file or directory'
$ sudo apt-get install libc6
# https://stackoverflow.com/a/20150282/5078874
$ sudo apt-get install libc6-dev
$ sudo apt-get install libffi-dev


# Now, go for the development tools
# https://stackoverflow.com/a/63442072/5078874
$ sudo apt-get install ubuntu-dev-tools


# Finally, try again
$ bundle update --bundler
# ... enjoy :)

参考文献:

这个解决办法救了我:

  1. 通过终端安装 homebrew

  2. 自制程序成功安装后,输入终端

    $ brew install cocoapods

终于完成了!

更新: 您可以通过以下命令安装 homebrew:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

从这里

在 Mac 中,我的工作方式是:

sudo xcode-select --reset

我之前安装了 xcode-select,但它无论如何都不能工作。