scons编译mongodb(vs2008版本)遇到的问题总结
OS:win7 64
boost:1.49
mongodb:2.4.6(推荐64位版本,当然如果你系统是32位的,只能使用32的版本了)
IDE:vs2008(2010的同学请跳过吧,因为官网提供的就是2010的版本)
因为项目的需求,要提供vc2008的版本,不得已才折腾的,╮(╯▽╰)╭
-------------------------------------------------------------------------
编译参考,虽然是vs2010的,但是vs2008同理:
http://www.cnblogs.com/geosky/archive/2013/05/05/VS2010-MongoDB-Cpp-Driver.html
遇到的问题:
1.'cl' is not recognized as an internal or external command,
operable program or batch file.
参考:https://groups.google.com/forum/#!msg/rt-thread-cnusers/kH9rP_ih8DQ/4lFj67_vlREJ
修改方法:
在 $PYTHON\scons-2.2.0\SCons\Tool\MSCommon\vc.py
# Dict to 'canonalize' the arch
_ARCH_TO_CANONICAL = {
"amd64" : "amd64",
"emt64" : "amd64",
"i386" : "x86",
"i486" : "x86",
"i586" : "x86",
"i686" : "x86",
"ia64" : "ia64",
"itanium" : "ia64",
"x86" : "x86",
"x86_64" : "x86",
#"x86_64" : "amd64",
}
原因可能是我安装vs2008不支持x86_64,所以不能接受“amd64”编译参数,这样修改后,只能编译32位的版本了,注意!
解决办法2:
打sp1的补丁
ISO版的SP1(即VS2008SP1CHSX1512981_20080811.iso):http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=27673c47-b3b5-4c67-bd99-84e525b5ce61
现在不打sp1的补丁,后面会遇到编译错误,还是要打的。
2.编译的时候找不到“cstdint.h”头文件
这个头文件本身是C11里面的东西。vc2010的sdk有这个,vs2008没有这个。观察这个头文件,只是一些数据类型的定义,故可以替换之.
使用msinttypes里面stdint.h替换下:https://code.google.com/p/msinttypes/downloads/detail?name=msinttypes-r26.zip&can=2&q=
把stdint.h放到你的vc的sdk目录下,类似这样目录:Microsoft SDKs\Windows\v6.0A\Include
并且修改“mongodb-src-r2.4.6\src\mongo\platform”下面cstdint.h中相关代码:
#if defined(_MSC_VER)
#include <stdint.h> /* #include <cstdint.h> */
#define _MONGO_STDINT_NAMESPACE /* #define _MONGO_STDINT_NAMESPACE std */
3.编译的时候找不到“EADDRINUSE”和“ECONNABORTED”的定义
打开“mongodb-src-r2.4.6\src\mongo\util\net”下的"listen.cpp",做如下修改:
#include "pch.h"
#include "listen.h"
#include "message_port.h"
#include "mongo/base/owned_pointer_vector.h" #ifdef _WIN32
#define EADDRINUSE WSAEADDRINUSE
#define ECONNABORTED WSAECONNABORTED
#endif #ifndef _WIN32 # ifndef __sunos__
# include <ifaddrs.h>
# endif
# include <sys/resource.h>
# include <sys/stat.h>
后面再把整个工程放上来,还有一点细节要修改。待续
scons编译mongodb(vs2008版本)遇到的问题总结的更多相关文章
- debian 7上源码编译MongoDB 3.4版本
此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 要想精通一个数据库,除了知道该数据库的功能特性.使用方法等,还需要能够看懂数据库源码,能够使用gdb工具对其 ...
- 如何编译MongoDB?
本文将在Linux环境下编译Mongodb. 您可以选择已经编译好的版本直接使用,也可以尝试自己编译.https://www.mongodb.org/downloads#production 官方 ...
- 使用VS2010编译MongoDB C++驱动详解
最近为了解决IM消息记录的高速度写入.多文档类型支持的需求,决定使用MongoDB来解决. 考虑到MongoDB对VS版本要求较高,与我现有的VS版本不兼容,在leveldb.ssdb.redis.h ...
- VS 2013编译64位版本QT 4.8.6及使用cmake为依赖QT生成VS项目时Could NOT find Qt4
对于一些已经解决的问题,本博客不再讨论.只将本人遇到的问题做简单的说明. 一.VS 2013编译64位版本QT 4.8.6 QT项目官网中,对于QT4,其只提供了windows X86的版本,并且支持 ...
- [转载]Linux 环境下编译 0.11版本内核 kernel
最近在看<.如果Clobber/Modify 为空,则其前面的冒号(:)必须省略. 2.如果Output,Input,Clobber/Modify都为空,Output,Input之前的冒号(:) ...
- Data Base mongodb高版本与低版本的区别
mongodb高版本与低版本的区别 一.mongodb引擎: Mongodb 3.0支持用户自定义存储引擎,用户可配置使用mmapv1或者wiredTiger存储引擎. 3.2版本以后默认的开启的是w ...
- 由源代码编译SpriteBuilder最新版本1.5.0搭配最新的Cocos2D 3.4.9
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 大家知道SpriteBuilder版本停留在1.4.9已经很久 ...
- 在Windows系统上一批可以下载但是需要经过编译再安装的第三方的直接编译后的版本(UCI页面)
在Windows系统上一批可以下载但是需要经过编译再安装的第三方的直接编译后的版本(UCI页面) (https://www.lfd.uci.edu/~gohlke/pythonlibs/) win10 ...
- MongoDB社区版本和企业版本差别
MongoDB社区版本和企业版本差异主要体现在安全认证.系统认证等方面,具体信息参考下表: 版本特性 社区版本 企业版本 JSON数据模型.自由模式 支持 支持 水平扩展的自动分片功能 支持 支持 内 ...
随机推荐
- 【t094】区间运算
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 区间运算是数学的一个领域.在区间运算中,常量和变量并不表示为一个单独.精确的值,而是表示为一个有着上界 ...
- [转]mnesia数据库学习笔记
mnesia数据库学习笔记一 mnesia数据库学习笔记二 mnesia数据库学习笔记三 mnesia数据库学习笔记四
- CodeForces 659E New Reform (图的遍历判环)
Description Berland has n cities connected by m bidirectional roads. No road connects a city to itse ...
- 【rlz000】字串找数
Time Limit: 3 second Memory Limit: 2 MB 问题描述 输入一个字符串,内有数字和非数字字符.如A123X456Y7A,302ATB567BC,统计共有多少个整数, ...
- 【21.37%】【codeforces 579D】"Or" Game
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- Android Studio如何删除module
当你想在Android Studio中删除某个module时,大家习惯性的做法都是选中要删除的module,右键去找delete.但是 在Android Studio中你选中module,右键会发现没 ...
- Linux 下的任务管理 —— ps、top
ps:report a snapshot of the current processes. ps 命令支持三种使用的语法格式 UNIX 风格,选项可以组合在一起,并且选项前必须有"-&qu ...
- react 父组件向子组件传递函数
这段时间一直在使用react,由于这react是单向数据绑定,总感觉有点不适用,毕竟之前一直都在使用angular,但学习还是要继续,做了一个迭代的项目,都差点忘记要总结一下这个react了,现在可以 ...
- LockWindowUpdate的函数的用法
Application.ProcessMessages;LockWindowUpdate(Self.Handle); //锁住当前窗口 LockWindowUpdate(0)//解除锁定窗口 Lock ...
- HTC VIVE 虚拟现实眼镜VR游戏体验
HTC的VIVE入手一段时间了,体验了几个免费的VR游戏,效果还不错,分享一下. 1. VIVE主要部件 VIVE的主要部件有3个,分别是头盔,两个无线控制手柄和两个定位器. 1.1 头盔 头盔整体照 ...