码迷,mamicode.com
首页 > 数据库 > 详细

LevelDB的使用

时间:2015-07-08 16:33:11      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:ios   leveldb   

Google的开源项目LevelDB好是好,但却留下了个大坑,折磨我了一两天,查阅了大量资料。发现大家碰到的问题也跟我差不多,在此写下笔记记录下来。

参考:
https://github.com/google/leveldb                                             Google源码地址
http://www.tanhao.me/pieces/1397.html/                                  老谭笔记
http://www.ifun.cc/blog/2014/02/09/leveldb-for-ios/                  Haven’s blog


遇到的问题:
1.从GitHub上clone下来的源码文件,编译失败,经检查以下缺少文件。
技术分享
红色框的部分是从别的地方成功clone下来的文件拷贝过来的,执行编译代码后生成蓝色框文件。暂时二者都做保留,让它编译时自己选择吧。

2.leveldb/db.h file not found.
出现该问题的原因是编译出的静态库.a文件的头文件.h 设置搜索路径有误。具体设置参照下图。
技术分享
另静态库.a文件搜索路径如果有误,也要重新设置,参照下图:
技术分享

3.最折磨人的一个问题(Google留下的一个坑)
直接使用源代码里面的Makefile文件来进行编译,这时候如果在工程中使用编译出来的.a文件,会报错,找不到arm64.....,真机和模拟器的32位和64位我都试了,全都报错....这个问题就是Google留给我们的巨坑。Makefile文件里涉及真机和模拟器的Architectures写的相当有问题。主要是最后的 .cc.o: 和.c.o: 那里。

原文件:
技术分享

修改后适用真机及模拟器(包含32位、64位)的Makefile文件:
技术分享

解决上述三个问题后,就可重新编译.a文件。然后就能正常使用了。

编译命令:
1.首先cd到源码目录的根目录下。
2用命令进行编译
CXXFLAGS=-stdlib=libc++ make PLATFORM=IOS
CXXFLAGS=-stdlib=libstdc++ make PLATFORM=IOS
  
两条命令都可以,用于用到了c++标准库,这儿分别用了新旧不同的库而已。libc++是支持c++ 11标准的,这儿分别对应xcode中引用的两个库ibc++.dylib与libstdc++.dylib两个库。

版权声明:本文为博主原创文章,未经博主允许不得转载。

LevelDB的使用

标签:ios   leveldb   

原文地址:http://blog.csdn.net/xin_zhg/article/details/46803991

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!