此问题适用于 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:\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...”,但这是否相关?
最佳答案
同样适用于 Mac:
如果您的系统上尚未安装 xcode 开发工具(可能您最近升级了操作系统或 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,您可能会遇到不同的问题,在这种情况下,请参阅这篇文章 Installing puma 5.6.2 with native extensions Gem::Ext::BuildError: ERROR: Failed to build
关于ruby - Gem 安装错误 : You have to install development tools first (Windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27768420/