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数据模型.自由模式 支持 支持 水平扩展的自动分片功能 支持 支持 内 ...
随机推荐
- 【codeforces 765D】Artsem and Saunders
[题目链接]:http://codeforces.com/contest/765/problem/D [题意] 给你一个函数f(x); 要让你求2个函数g[x]和h[x],使得g[h[x]] = x对 ...
- 创建数据库以及其属性的sql语句
创建数据库的SQL语句: create database stuDB on primary -- 默认就属于primary文件组,可省略 ( /*--数据文件的详细描写叙述--*/ name='stu ...
- LaunchImage启动黑屏-模拟器可以,但是真机黑屏
名称和尺寸都是对的,就是不显示.结果美工重新做一张图片就行了,想了半天都没想到是图片本身等问题啊
- sql数据库时间转换convert
CONVERT CONVERT将某种数据类型的表达式显式转换为另一种数据类型. 严格来说,CONVERT不属于日期处理函数,只是它被经常用于日期处理中,所以这里把它列入了其他日期处理函数,下面是CON ...
- Linux 在主要的搜索命令和视图的信息
查找命令和硬件信息查看的日常系统管理.最常见的维护操作. 继 Linux 基本查找命令做一个简单的比较.并列出了一些硬件信息经常使用的视图命令. man 经常使用选项 -k 知道功能.不知道名称 -f ...
- cocos2d-x创建第一个项目
#include "AppDelegate.h" #include "HelloWorldScene.h" USING_NS_CC; AppDelegate:: ...
- STL之适配器
一,STL适配器简介 1.什么是适配器 STL提供了序列式容器,同时针对序列式容器提供了应用于不同场景的容器适配器,通俗讲适配器就是以序列式容器为底层数据结构,进一步封装了的为适应场景应用的容器.ST ...
- repo/git Android/CyanogenMod srouce code
For getting the whole Android/CM rom source code, 1. get the repo first.2. make sure the git is inst ...
- 【003】【Java虚拟机——对象死亡的判断】
对象死亡! 垃圾收集器在对堆进行回收前,首先要做的事情就是要确定这些对象之中哪些还"存活"着, 哪些已经"死去" (即不可能再被不论什么途径使用的对象). 1) 引用计 ...
- python 教程 第十八章、 Web编程
第十八章. Web编程 import urllib2 LOGIN = 'jin' PASSWD = 'Welcome' URL = 'https://tlv-tools-qc:8443/qcbin/s ...