Ruby gem在Windows 10上安装bson失败

Ruby gem在Windows 10上安装bson失败,ruby,installation,rubygems,bson,hanami,Ruby,Installation,Rubygems,Bson,Hanami,我正在尝试使用mongoid制作ruby hanami api,但由于bson,安装失败。 我得到这个错误 我的ruby版本是2.6.5 我在互联网上寻找解决方案,但没有一个有效。我尝试使用gem update更新我的gem版本。 我试图在bson endian.h中添加#include 如何解决该问题。安装BSON Gem的4.5.0版。问题出在Gem的4.6.0版本中 带捆绑包: 将gem'bson','~>4.5.0'添加到Gemfile并运行bundle安装 没有:gem安装bson

我正在尝试使用mongoid制作ruby hanami api,但由于bson,安装失败。 我得到这个错误



我的ruby版本是2.6.5

我在互联网上寻找解决方案,但没有一个有效。我尝试使用
gem update
更新我的gem版本。 我试图在bson endian.h中添加
#include


如何解决该问题。

安装BSON Gem的4.5.0版。问题出在Gem的4.6.0版本中

带捆绑包: 将
gem'bson','~>4.5.0'
添加到Gemfile并运行
bundle安装


没有:
gem安装bson-v4.5.0

您是如何安装Ruby的?您是如何安装Ruby的开发头文件和用于构建gems的编译器工具链的?Ruby网站上的Ruby dev kit windows安装程序也有同样的问题

    compiling bytebuf.c
    compiling endian.c
    In file included from endian.c:18:
    bson-endian.h:109:1: error: unknown type name 'uint16_t'; did you mean 'wint_t'?
      109 | uint16_t __bson_uint16_swap_slow(uint16_t v);
          | ^~~~~~~~
          | wint_t
    bson-endian.h:109:34: error: unknown type name 'uint16_t'; did you mean
    'wint_t'?
      109 | uint16_t __bson_uint16_swap_slow(uint16_t v);
          |                                  ^~~~~~~~
          |                                  wint_t
    bson-endian.h:110:1: error: unknown type name 'uint32_t'; did you mean 'wint_t'?
      110 | uint32_t __bson_uint32_swap_slow(uint32_t v);
          | ^~~~~~~~
          | wint_t
    bson-endian.h:110:34: error: unknown type name 'uint32_t'; did you mean
    'wint_t'?
      110 | uint32_t __bson_uint32_swap_slow(uint32_t v);
          |                                  ^~~~~~~~
          |                                  wint_t
    bson-endian.h:111:1: error: unknown type name 'uint64_t'
      111 | uint64_t __bson_uint64_swap_slow(uint64_t v);
          | ^~~~~~~~
    bson-endian.h:111:34: error: unknown type name 'uint64_t'
      111 | uint64_t __bson_uint64_swap_slow(uint64_t v);
          |                                  ^~~~~~~~
    endian.c:35:1: error: unknown type name 'uint16_t'; did you mean 'wint_t'?
       35 | uint16_t __bson_uint16_swap_slow(uint16_t v)
          | ^~~~~~~~
          | wint_t
    endian.c:35:34: error: unknown type name 'uint16_t'; did you mean 'wint_t'?
       35 | uint16_t __bson_uint16_swap_slow(uint16_t v)
          |                                  ^~~~~~~~
          |                                  wint_t
    endian.c:56:1: error: unknown type name 'uint32_t'; did you mean 'wint_t'?
       56 | uint32_t __bson_uint32_swap_slow(uint32_t v)
          | ^~~~~~~~
          | wint_t
    endian.c:56:34: error: unknown type name 'uint32_t'; did you mean 'wint_t'?
       56 | uint32_t __bson_uint32_swap_slow(uint32_t v)
          |                                  ^~~~~~~~
          |                                  wint_t
    endian.c:80:1: error: unknown type name 'uint64_t'
       80 | uint64_t __bson_uint64_swap_slow(uint64_t v)
          | ^~~~~~~~
    endian.c:80:34: error: unknown type name 'uint64_t'
       80 | uint64_t __bson_uint64_swap_slow(uint64_t v)
          |                                  ^~~~~~~~
    endian.c: In function '__bson_double_swap_slow':
    endian.c:109:4: error: unknown type name 'uint64_t'
      109 |    uint64_t uv;
          |    ^~~~~~~~
    In file included from endian.c:18:
    bson-endian.h:65:57: error: 'uint64_t' undeclared (first use in this function)
       65 | #  define BSON_UINT64_SWAP_LE_BE(v) __builtin_bswap64 ((uint64_t)v)
          |                                                         ^~~~~~~~
    bson-endian.h:65:57: note: in definition of macro 'BSON_UINT64_SWAP_LE_BE'
       65 | #  define BSON_UINT64_SWAP_LE_BE(v) __builtin_bswap64 ((uint64_t)v)
          |                                                         ^~~~~~~~
    bson-endian.h:65:57: note: each undeclared identifier is reported only once for
    each function it appears in
       65 | #  define BSON_UINT64_SWAP_LE_BE(v) __builtin_bswap64 ((uint64_t)v)
          |                                                         ^~~~~~~~
    bson-endian.h:65:57: note: in definition of macro 'BSON_UINT64_SWAP_LE_BE'
       65 | #  define BSON_UINT64_SWAP_LE_BE(v) __builtin_bswap64 ((uint64_t)v)
          |                                                         ^~~~~~~~
    endian.c:112:32: error: expected ')' before 'uv'
      112 |    uv = BSON_UINT64_SWAP_LE_BE(uv);
          |                                ^~
    bson-endian.h:65:66: note: in definition of macro 'BSON_UINT64_SWAP_LE_BE'
       65 | #  define BSON_UINT64_SWAP_LE_BE(v) __builtin_bswap64 ((uint64_t)v)
          |                                                                  ^
    make: *** [Makefile:244: endian.o] Error 1

    make failed, exit code 2