加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 从源代码构建mongodb时出错

发布时间:2020-12-16 06:49:53 所属栏目:百科 来源:网络整理
导读:我正在尝试从源代码构建 mongodb并获得一些错误. 这是整个输出的pastebin: http://pastebin.com/pyZLTkz4 第一个错误是 endian.h does not define __BYTE_ORDER nor BYTE_ORDER. Cannot determine endianness. 而所有其他错误就像 error: template with C l
我正在尝试从源代码构建 mongodb并获得一些错误.

这是整个输出的pastebin:
http://pastebin.com/pyZLTkz4

第一个错误是

endian.h does not define __BYTE_ORDER nor BYTE_ORDER. Cannot determine endianness.

而所有其他错误就像

error: template with C linkage
error: template specialization with C linkage

我的配置是:

> Debian 8 64位
> scons版本:2.3.1
> python版本:2 7 9
> gcc版本:gcc(Debian 4.9.2-10)4.9.2

已安装的依赖项

sudo apt-get build-dep mongodb

我试图在CentOS 7下构建它并获得相同的结果.

解决方法

关于第一个错误

sys / param.h标头通常定义符号__BYTE_ORDER,__BIG_ENDIAN,__LITTLE_ENDIAN和__PDP_ENDIAN.您可以通过执行以下操作来测试字节顺序:

sys / param.h标头通常定义符号__BYTE_ORDER,__LITTLE_ENDIAN和__PDP_ENDIAN.您可以通过执行以下操作来测试字节顺序:

#include <sys/param.h>

   #ifdef __BYTE_ORDER
   # if __BYTE_ORDER == __LITTLE_ENDIAN
   #  define I_AM_LITTLE_ENDIAN
   # else
   #  if __BYTE_ORDER == __BIG_ENDIAN
   #   define I_AM_BIG_ENDIAN
   #  else
       Error: unknown byte order!
   #  endif
   # endif
   #endif /* __BYTE_ORDER */

如果未定义__BYTE_ORDER,您可能需要测试BYTE_ORDER,BIG_ENDIAN和LITTLE_ENDIAN的存在. Linux将这些定义为具有下划线的版本的同义词,显然是为了与BSD Unix兼容.

如果没有定义,您可以尝试以下方法:

#if defined (i386) || defined (__i386__) || defined (_M_IX86) || 
        defined (vax) || defined (__alpha)
   # define I_AM_LITTLE_ENDIAN
   #endif

Read more

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读