简单描述一下这个问题:
我们项目中使用了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. vimer

    vimer 第1.0章.统一概念   不管学什么技术,我都深信概念是最重要的.是影响整个学习轨迹,决定能在这个技术领域高度. 当然如果你现在的目的不是在学习而在于解决问题(很多人不愿意承认,或者没发现 ...

  2. 基于GruntJS前端性能优化

    在本文中,如何使用GruntJS为了使治疗简单的前端性能优化自己主动,我写了一个完整的样本放在Github上.能够參考一下.关于Yahoo的前端优化规则请參考:Best Practices for S ...

  3. Custom Data Service Providers

    Custom Data Service Providers Introduction Data Services sits above a Data Service Provider, which i ...

  4. c++的vector容器

    c++还有一个很常用的容器就是vector容器,他是数组实现的,是一种可变长的容器,在很多的时候可以简化我们的编程.可学习的链接:http://www.cnblogs.com/mr-wid/archi ...

  5. .NET中lock的使用方法及注意事项

    lock就是把一段代码定义为临界区,所谓临界区就是同一时刻只能有一个线程来操作临界区的代码,当一个线程位于代码的临界区时,另一个线程不能进入临界区,如果试图进入临界区,则只能一直等待(即被阻止),直到 ...

  6. Objective-C马路成魔【14-关键C语言功能】

    郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主.捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 这里介绍一 ...

  7. 兼容安卓的javaproject1.0

    <pre class="java" name="code"> //兼容安卓的系统package cn.com.likeshow; import ja ...

  8. Jquery--仿制360右下角弹出窗口

    原文:Jquery--仿制360右下角弹出窗口 先发浏览器效果图,给大家看. 要实现这样的效果,按照思路,第一步,写好CSS布局,将图片放到浏览器右下角的位置 CSS代码很灵活,我写的只是简单的一种而 ...

  9. jQuery的ajax对WebApi和OData的封装

    基于jQuery的ajax对WebApi和OData的封装 WebApi 的使用带来了一个显著的特点,对type有一定的要求.一般ajax的type无非就是两种,GET和POST.如果用JSONP来跨 ...

  10. IOS中UIDatePicker

    UIDatePicker 1.常见属性 /* 样式 UIDatePickerModeTime,时间 UIDatePickerModeDate,日期 UIDatePickerModeDateAndTim ...