解决Xcode升级7.0后,部分.a静态库在iOS9.0的模拟器上,link失败的问题
简单描述一下这个问题:
我们项目中使用了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失败的问题的更多相关文章
- 解决xcode升级之后安装的插件失效
title: 解决xcode升级之后安装的插件失效date: 2015-08-23 11:07:53categories: 编辑工具 tags: xcode 我的博客:http://daycoding ...
- Xcode升级10.3后XIB文件报错
Xcode升级10.3后XiB文件包错,提示: Failed to find or create execution context for description '<IBCocoaTouch ...
- vc6.0里使用lib(静态库)的方法
vc6.0 中使用lib文件 使用库的方法如下:1. 包含库的头文件(把库的头文件包含到项目中)在应用程序工程中使用#include "file path"file path可以为 ...
- xcode升级或者重新安装后不能编译的解决方法
昨天由于xcode有一些问题,因此进行了重新安装,结果安装好后进行编译,没有进行任何改动的代码出现了两个fatal error 查看错误信息为什么的header has allready build, ...
- XCode升级到7后,规范注释生成器VVDocumenter插件没有用了,怎么办?
Xcode更新到7之后,发现很多插件包括规范注释生成器VVDocumenter的插件都没法用了,找遍百度都没有找到成功解决这个问题的方法,然后我突发奇想,把注释也弄进代码模板里.虽然没有插件那样灵活: ...
- 一行命令解决 xcode升级新版本插件失效问题
sudo find ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist -maxdepth ...
- 解决spring3升级到spring4后jackjson报错
1.这里说的是基于spring+springmvc+hibernate框架(其实跟持久层框架也没关系) 2.首先是springmvc的配置,处理json数据都会用到的.第5行是spring-4.x的写 ...
- iOS 解决xcode设置全局断点后 执行视频播放时自动进入断点cxa_throw
iOS中遇到报错,然后断点停留在了libc++abi.dylib`__cxa_throw:里面,这是因为C++文件异常,一般直接点击下一个断点就能跳过去,然后项目还是继续可以运行. 解决方案 右键编辑 ...
- Xcode 创建.a和framework静态库(转载)
库介绍 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. iOS中的静态库有 .a 和 .framework两种形式:动态库有.dylib 和 .framew ...
随机推荐
- 使用Eclipse+Maven+Jetty构建Java Web开发环境(几个教程综合集成2014发行)
工作需要使用Jetty由于web集装箱,得知Eclipse+Maven+Jetty该组合是非常好的,因此,要在网上找了很多教程,但不写或多或少特定的或过时的内容而导致最终的配置失败,易于配置为未来的同 ...
- unix cd使用命令
[语法]: cd [夹] [说明]:此命令用于工作文件以改变当前的文件夹,使用环境变量没有参数$HOME 作为它的参数,$HOME 路径通常在注册时输入. [抽样]: cd 文件夹 c ...
- NYOJ 904 search(stable_sort函数的应用)
描述 游戏积分的排行榜出来了,小z想看看得某个积分的人是谁.但是由于人数很多,他自己找很浪费时间,所以他想请你帮忙写一个程序,能快速的帮他找到他想要找的人 输入 多组测试数据,第一行有一个数T,表 ...
- Select与SelectMany的区别
Select() 和 SelectMany() 的工作都是依据源值生成一个或多个结果值. Select() 为每个源值生成一个结果值.因此,总体结果是一个与源集合具有相同元素数目的集合.与之相反,Se ...
- java_软件发布版本_Asynch HttpClien 对比发行版本说明_Alpha、Beta、RC、GA版本的区别
今天看了一天的apache 的httpasyncclient ,为了和默认的httpclient做个对比,httpcore是核心轻量级的提供传统阻塞IO 和 java NIO两种方式,httpclie ...
- JavaEE Tutorials (1) - 概述
1.1 Java EE 7平台新增特性3 1.2 Java EE应用模型3 1.3 分布式多层应用4 1.3.1 安全4 1.3.2 Java EE组件5 1.3.3 Java EE客户端6 1.3. ...
- Log4j2 简明教程
一.概述 log4j2官方文档内容非常多,要一次性了解全部是不可能的.正确的步骤应当是先了解最常见的配置,当发现原有知识无法解决问题,再重新查看文档看有没有合适的配置.下面将从文件结构入手,再到简单的 ...
- Group and sum array of hashes by date
I have an array of hashes like this: [{:created=>Fri, 22 Jan 2014 13:02:13 UTC +00:00, :amount=&g ...
- WebService它CXF注释错误(两)
WebService它CXF注解 1.详细报错例如以下 五月 04, 2014 11:24:12 下午 org.apache.cxf.wsdl.service.factory.ReflectionSe ...
- c语言下多线程
原文:c语言下多线程 [问题]创建了10个线程,10个线程公用一个线程体,创建如下: int t1=0,t2=1,t3=2,t4=3,t5=4,t6=5,t7=6,t8=7,t9=8,t10=9; i ...