Gem インストール エラー: 最初に開発ツールをインストールする必要があります (Windows)
概要
この質問は Windows に関するものです
gem ‘sinatra-websocket’ をインストールしようとしましたが、gem install sinatra-websocket を実行すると、このエラーが発生しました…
エラー: gem ネイティブ拡張機能のビルドに失敗しました
… とともに …
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:にある mkmf ファイルは次のとおりです。uby\1.9.1hin-1.6.3hin_parser は次のようになります。
"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 を作成できませんでした…」という行がありますが、これは関係ありますか?
解決策
Mac の場合:
システムに xcode 開発ツールがまだインストールされていない場合 (おそらく最近 OS または 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 がインストールされている場合は、別の問題が発生する可能性があります。その場合は、この投稿「ネイティブ拡張機能を使用した puma 5.6.2 のインストール Gem::Ext::BuildError: ERROR: Failed to build」を参照してください。