windows下编译leveldb
前提条件,下载boost库并编译
boost库弄好后,就可以编译leveldb了
首先,下载leveldb-windows,这个github上有
一。
1文件-》新建-》从现有代码文件创建新项目
打开 从现有代码文件创建新项目 向导窗口
2要创建什么类型的项目? 选择Visual C++
3项目文件位置 选择源码所在位置leveldb-windows文件夹所在位置
这里源码文件在E:\0AA--master\leveldb-master目录中,所以使用的是E:\0AA--master\leveldb-maste
4项目名称填写 LevelDB
5使用Visual Studio 项目类型选择 静态库(LIB)项目
如果静态库(LIB)项目没有导入成功,可以先选择Windows应用程序项目
6 在设置"调试"配置的设置 中
预处理器定义 填写LEVELDB_PLATFORM_WINDOWS;OS_WIN
包括搜索路径 填写E:\LIB\leveldb-windows;E:\LIB\leveldb-windows\include
7完成导入
二。检查配置部分
Boost库在E:\LIB\boost64目录下,在项目的属性页中 配置成64位平台
把需要包含的leveldb,boost的头文件包含进去,boost的lib也包含进去
(手动从项目中排除所有的 *_test.cc 和*_bench.cc 文件,从项目里面移除所有 xxx_text.c c xxxx_bench.cc 测试和性能测试相关源文件。本文编译时没做括号中这部分)
排除其他平台的文件
port/port_android.cc
port/port_posix.cc
util/env_posix.cc
三。修改源码
1.db\c.cc文件中头文件unistd.h
unistd.h 是 C 和 C++ 程序设计语言中提供对 POSIX 操作系统 API 的访问功能的头文件的名称。是Unix Standard的缩写。
windows下不支持.直接注释即可
2.port\port.h文件中
注明使用的是windows系统
在预编译中增加
#elif defined(LEVELDB_PLATFORM_WINDOWS)
#include "port/port_win.h"
四。编译过程中遇到的问题:
1.无法打开包括文件:“sys/mman.h”: No such file ordirectory
第一次编译出现这个问题,第二次重新导入工程重做的时候没有出现这个问题。可能是因为第一次没有排除port/port_posix.cc文件。
2.无法打开包括文件:“pthread.h”: No such file or directory
下载最新版本pthreads-w32-2-9-1,下载后解压,可以看到共有三个文件夹,用到的主要是“Pre-built.2”这个文件夹下的三个文件夹,分别是动态链接库、头文件、静态链接库;然后配置头文件及静态链接库,配置动态链接库。
https://blog.csdn.net/qianchenglenger/article/details/16907821
3.无法打开包括文件:“sqlite3.h”: No such file or directory
下载sqlite3.h,并在配置中包含进去
https://www.cnblogs.com/superbi/p/4980127.html
4.无法打开包括文件:“kcpolydb.h”: No such file or directory
http://fallabs.com/kyotocabinet/winpkg/
下载kcpolydb.h,并在配置时包含进去
5.无法打开包括文件:“endian.h”: Nosuch file or directory
endian.h是Linux下编译涉及的头文件,在Windows中编译,不需要此头文件。
6.VS2012:"snprintf"找不到标识符
https://blog.csdn.net/shhdgl/article/details/41900045
snprintf()函数的格式跟printf差不多一样,是在c里面用的函数,包含在 #include <stdio.h>头文件中。
但snprintf()函数并不是标准c/c++中规定的函数,所以在许多编译器中,厂商提供了其相应的实现的版本。在gcc中,该函数名称就snprintf(),而在VS中称为_snprintf。 所以在需要使用snprintf()时改成_snprintf就可以了,或者在预编译处加入:
|
#if _MSC_VER #define snprintf _snprintf #endif |
7. dirent.h可以在windows下用吗
下载dirent-master,把头文件包括进去
然后就可以编译生成LevelDB.lib
在使用的时候,除了leveldb的头和静态库,还需要下面几个boost的库
libboost_date_time-vc120-mt-gd-x64-1_67.lib
libboost_filesystem-vc120-mt-gd-x64-1_67.lib
libboost_system-vc120-mt-gd-x64-1_67.lib
libboost_thread-vc120-mt-gd-x64-1_67.lib
libboost_chrono-vc120-mt-gd-x64-1_67.lib
windows下编译leveldb的更多相关文章
- [转] Windows下编译OpenSSL
简述 OpenSSL是一个开源的第三方库,它实现了SSL(Secure SocketLayer)和TLS(Transport Layer Security)协议,被广泛企业应用所采用.对于一般的开发人 ...
- Windows下编译objective-C
Windows下编译objective-C 2011-08-31 14:32 630人阅读 评论(0) 收藏 举报 windowscocoa工具objective clibraryxcode 目录 ...
- 在Windows下编译FFmpeg详细说明
MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时 MinGW,即 Minimalist GNU F ...
- 如何在WINDOWS下编译BOOST C++库 .
如何在WINDOWS下编译BOOST C++库 cheungmine 2008-6-25 写出来,怕自己以后忘记了,也为初学者参考.使用VC8.0和boost1.35.0. 1)下载boost ...
- 在Windows下编译OpenSSL(VS2005和VC6)
需要说明的是请一定安装openssl-0.9.8a . openssl-1.0.0我没有编译成功. 如何在Windows下编译OpenSSL (Vs2005使用Vc8的cl编译器)1.安装Activ ...
- windows下编译java源文件的编码错误
import java.util.Arrays;public class ArrayAsAReference{ public static void main(String[] args) { int ...
- Windows下编译SDL
Windows下编译SDL的理由我就不多说了,无论用VS来编译或调试SDL库都是很方便的.而且SDL源代码中也包含了VC工程,你所要做的只是解压VC工程,进行适当的配置,然后编译.调试. 编译SDL大 ...
- Windows下编译安装 FFmpeg
在Linux/Mac下编译 ffmpeg是非常方便的.但要在 Windows下编译 ffmpeg还真要花点时间.以下就是在 Windowns下编译ffmpeg的步骤: 一.安装Cygwin 在wind ...
- windows下编译php7图形库php_ui.dll
CSDN博客 具有图形化编程才有意思,这几天看到了php ui 图形扩展,只是现在只能下载php 7.1的 本次教程编译php7.2.6的 php ui 要是linux下编译起来比较简单 但是 win ...
随机推荐
- python获取命令行参数
python获取命令行参数 主要是通过sys的argv列表来获取命令行内容,命令行的参数以空格分隔放到argv列表中. import sys if __name__ == "__main__ ...
- React.js 小书 Lesson25 - 实战分析:评论功能(四)
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson25 转载请注明出处,保留原文链接和作者信息. (本文未审核) 目前为止,第二阶段知识已经基本 ...
- iconfont_3种引用方式
IconFont 图标的3种引用方式 新版Iconfont-阿里巴巴矢量图标库支持三种引用方式: 1.unicode引用(原始) unicode是字体在网页端最原始的应用方式,特点是: 兼容性最好 ...
- response提交原理(转)
摘自:http://blog.csdn.net/quechao123/article/details/6256653 http://jorton468.blog.163.com/blo ...
- 次讲解js中的回收机制是怎么一回事。
在前几天的一篇闭包文章中我们简单的介绍了一下闭包,但是并没有深入的讲解,因为闭包涉及的知识点比较多,为了能够更好的理解闭包,今天讲解一下关于js中的回收机制. 在初识闭包一文中我说过js中有回收机制这 ...
- Centos 下搭建FTP上传下载服务器
首先判断你服务器上是否安装了vsftpd 安装vsftpd #yum -y install vsftpd 安装完成之后就要重启vsftpd服务 到vsftpd的主配置文件里面 把这个改为NO 默认 ...
- SQL拼接 html 发送
--在Job BES_Daily_FTP_filedownload 中使用 ALTER proc [dbo].[RSP_FN_UNAPPLIED_Mail_Reminder] as Declare @ ...
- C Primer Plus note1
C语言编译错误:multiple definition of `main' main多重定义,在同一个工程中定义了多个main函数 出现如下图的错误: 这是因为在第一张图中,有一个main.c的mai ...
- JS埋点 小结
今天在看<大型网站性能监测.分析与优化>一书,提到性能监测方式,才知道有这个名词 “JS埋点”. 大概作用:通过在web页面中,添加js脚本,实现对页面性能监测(如加载时间.服务器响应时间 ...
- java TreeSet 实现存自定义不可重复数据
本文主要是介绍一下java集合中的比较重要的Set接口下的可实现类TreeSet TreeSet类,底层用二叉树的数据结构 * 集合中以有序的方式插入和抽取元素. * 添加到TreeSet中的元素必须 ...