简单描述一下这个问题:
我们项目中使用了Google大神开发的LevelDB键值对数据库,在Xcode6,iOS8的环境下,编译好的.a静态库是可以正常使用的。但是升级后,发现在模拟器上无法link成功,真机上依然可以link成功。

再延伸一下LevelDB的介绍:

Leveldb是一个google实现的非常高效的kv数据库,目前能够支持billion级别的数据量了。 在这个数量级别下还有着非常高的性能,主要归功于它的良好的设计。

Leveldb是Jeff Dean和Sanjay Ghemawat两位大神级别的工程师发起的开源项目。其它更多更关Leveldb的介绍,可以google详细了解。

Leveldb的项目在github上的链接: https://github.com/google/leveldb

如果需要使用Leveldb,首先需要去下载托管在github上的代码,然后将代码编译成静态库。

用Xcode编译方法我就不啰嗦了,我使用的是命令行方式,感觉更快捷。步骤如下:
如果需要编译成Mac OSX系统的静态库:

1.首先用cd指令到leveldb的根目录

2.输入指令:CXXFLAGS=-stdlib=libc++ make

如果需要编译成iOS系统的静态库:

1.首先用cd指令到leveldb的根目录

2.输入指令:CXXFLAGS=-stdlib=libc++ make PLATFORM=IOS

然后将leveldb根目录下的.a静态库文件和include文件一起拖到自己的工程中,配置好header search paths和library search paths。

到此就可以使用Leveldb提供的接口了,由于Leveldb是用C++开发的,所以需要在使用的时候将引用db.h的.m修改为.mm。

现在来说一下标题问题的解决办法。升级后link失败,是由于模拟器要求的静态库文件支持的系统版本最低为7.0了。所以只需要稍微修改下编译指令,如下:

CXXFLAGS=-miphoneos-version-min=7.0 make PLATFORM=IOS

重新编译,生成的新.a文件就不会在模拟器上link失败了。

顺便提一下,如果需要修改编译的architecture类型或者sdk版本,可以去修改makefile。

需要直接使用LevelDB静态库的朋友,可以去这里clone:https://github.com/ALongWay/LSLevelDB

解决Xcode升级7.0后,部分.a静态库在iOS9.0的模拟器上,link失败的问题的更多相关文章

  1. 解决xcode升级之后安装的插件失效

    title: 解决xcode升级之后安装的插件失效date: 2015-08-23 11:07:53categories: 编辑工具 tags: xcode 我的博客:http://daycoding ...

  2. Xcode升级10.3后XIB文件报错

    Xcode升级10.3后XiB文件包错,提示: Failed to find or create execution context for description '<IBCocoaTouch ...

  3. vc6.0里使用lib(静态库)的方法

    vc6.0 中使用lib文件 使用库的方法如下:1. 包含库的头文件(把库的头文件包含到项目中)在应用程序工程中使用#include "file path"file path可以为 ...

  4. xcode升级或者重新安装后不能编译的解决方法

    昨天由于xcode有一些问题,因此进行了重新安装,结果安装好后进行编译,没有进行任何改动的代码出现了两个fatal error 查看错误信息为什么的header has allready build, ...

  5. XCode升级到7后,规范注释生成器VVDocumenter插件没有用了,怎么办?

    Xcode更新到7之后,发现很多插件包括规范注释生成器VVDocumenter的插件都没法用了,找遍百度都没有找到成功解决这个问题的方法,然后我突发奇想,把注释也弄进代码模板里.虽然没有插件那样灵活: ...

  6. 一行命令解决 xcode升级新版本插件失效问题

    sudo find ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist -maxdepth ...

  7. 解决spring3升级到spring4后jackjson报错

    1.这里说的是基于spring+springmvc+hibernate框架(其实跟持久层框架也没关系) 2.首先是springmvc的配置,处理json数据都会用到的.第5行是spring-4.x的写 ...

  8. iOS 解决xcode设置全局断点后 执行视频播放时自动进入断点cxa_throw

    iOS中遇到报错,然后断点停留在了libc++abi.dylib`__cxa_throw:里面,这是因为C++文件异常,一般直接点击下一个断点就能跳过去,然后项目还是继续可以运行. 解决方案 右键编辑 ...

  9. Xcode 创建.a和framework静态库(转载)

    库介绍 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. iOS中的静态库有 .a 和 .framework两种形式:动态库有.dylib 和 .framew ...

随机推荐

  1. JMS样本

    1.JMS它是一个制作AS提供Message服务.它接受由生成的消息(Message Provider)消息发出,并转发消息到消息消费者(Message  Consumer).2.JMS提供2的消息服 ...

  2. PHP memcache实现消息队列实例

    现在,memcache于server缓存广泛应用.下面我来介绍一下memcache消息队列中等待的样本实现,有需要了解的朋友可以参考. memche消息队列原则key上做文章.后消息或者日志. 然后通 ...

  3. Android 2.3.5源码 更新至android 4.4,能够下载,度娘网盘

    Android 4.4源代码下载(linux合并) ==============================切割线结束========================= 旧版本号的能够使用115, ...

  4. PHP+百度地图API+JAVASCRIPT实现GPS坐标与百度坐标转换的实例

    原文:PHP+百度地图API+JAVASCRIPT实现GPS坐标与百度坐标转换的实例 <!--小幅的坐标转换点位程序--> <!DOCTYPE html> <html&g ...

  5. 【百度地图API】如何区分地址解析和智能搜索?

    原文:[百度地图API]如何区分地址解析和智能搜索? 摘要: 很多用户一直无法区分地址解析geocoder和智能搜索localsearch的使用场景.该文章用一个详尽的示例,充分展示了这两个类,共5种 ...

  6. CentOS-6.5-x86_64 最小化安装,已安装包的总数,这些包?

    一.我们怎么知道有多少的包被安装? [root@localhost ~]# rpm -qa | wc -l 217 二.怎样得知安装了那些软件包? [root@localhost ~]# rpm -q ...

  7. printf与++的puzzle

    int b = 0; int c = 0; int main(int argc, const char *argv[]) { printf("%d %d %d %d %d",b,b ...

  8. Net平台下的消息队列介绍

    Net平台下的消息队列介绍   本系列主要记录最近学习消息队列的一些心得体会,打算形成一个系列文档.开篇主要介绍一下.Net平台下一些主流的消息队列框架.       RabbitMQ:http:// ...

  9. Swift入门教程:基本语法(五)

    断言 断言是一种实时检测条件是否为true的方法 如果条件为true,那么代码继续执行 如果条件为false,就抛出错误信息,直接终止程序的运行   断言的用法 使用全局的assert函数 passe ...

  10. Linux httpd 跳转简单方法二

    使用mod_proxy 这种方法要添加上mod_proxy_http.so 在httpd.conf 中打开httpd-vhost 在 httpd-vhost 里面添加上 <VirtualHost ...