【项目】静态库打包的一些注意事项

今天打包的时候,出现了一些问题:

localhost:~ LV$ lipo -info /Users/LV/Library/Developer/Xcode/DerivedData/FaceAPI-eryqzwkpzlhqgsczyrzogeimufsd/Build/Products/Debug-iphoneos/libFaceAPI.a
input file /Users/LV/Library/Developer/Xcode/DerivedData/FaceAPI-eryqzwkpzlhqgsczyrzogeimufsd/Build/Products/Debug-iphoneos/libFaceAPI.a is not a fat file
Non-fat file: /Users/LV/Library/Developer/Xcode/DerivedData/FaceAPI-eryqzwkpzlhqgsczyrzogeimufsd/Build/Products/Debug-iphoneos/libFaceAPI.a is architecture: armv7

首先复习一下(摘自:这里):

模拟器:
4s~5 : i386
5s~6plus : x86_64
真机:
3gs~4s : armv7
5~5c : armv7s (静态库只要支持了armv7,就可以跑在armv7s的架构上)
5s~6plus : arm64

但是上面也说道了,静态库只要支持armv7就可以支持armv7s了,但是我的错误是我的静态库现在不支持armv7,啥原因?

原因是在这里:

打包静态库时候,我用的是真机,而且真机的ios系统是9.1,当时我打包静态库的时候,Architecture Only 的Debug是 YES,后果你懂的。接下来改为NO重新生成静态库就可以了:

localhost:~ LV$ lipo -info /Users/LV/Library/Developer/Xcode/DerivedData/FaceAPI-eryqzwkpzlhqgsczyrzogeimufsd/Build/Products/Debug-iphoneos/libFaceAPI.a
Architectures in the fat file: /Users/LV/Library/Developer/Xcode/DerivedData/FaceAPI-eryqzwkpzlhqgsczyrzogeimufsd/Build/Products/Debug-iphoneos/libFaceAPI.a are: armv7 arm64 

想跟多了解Architecture Only 和 Valid Architectures 点击这里

时间: 2024-08-01 14:39:49

【项目】静态库打包的一些注意事项的相关文章

.a静态库打包

Introduction about Linkedme packaging .a file 打包 打包流程 1.静态库工程的创建 Xcode New一个新的project,选择IOS下面的Framework&Library,下面有一个Cocoa Touch Static Library.直接next去建立一个LinkedME_SDK这样的工程. 2.自动生成.h和.m文件 接下来你会看到自动生成.h和.m文件 可以在.m文件中写你要的代码(此静态库现在没有引用这两个文件生成.a前将之删除或者此时

静态库打包

静态库(把目标文件:二进制文件,.o,.a)打包:使用静态库有两个条件: 把库文件包含进来 包含头文件 注意:库文件中不能有main函数 Linux中,静态链接库以.a结尾,动态链接库以.so结尾. windows中,静态链接库以.lib结尾,动态链接库以.dll结尾. 静态库打包主要是把多个.o文件生成链接文件,有以下优点 代码保护(看不到原来代码) 维护成本低 可在静态库设置保护期(eg:获取当前时间和2019年比较,若大于则退出) Makefile的书写:   1 .PHONY:libmy

C++多项目静态库调用问题

C++项目的解决方案可能由多个子项目构成,在一个子项目调用其他子项目时,容易出现多种编译问题,先就工作中遇到的问题,作以下记录. 1.生成静态库(lib) 选中当前项目,然后选择 项目 --> 属性(或者选中项目,右键选属性) --> 配置属性 --> 常规 ,之后可以修改“配置类型”为“静态库(.lib)”,如下图: 2.调用静态库 此过程大致可以分为三步: (1)选择 项目 --> 属性 --> 配置属性 --> C/C++,然后修改“附加包含目录”,将静态库(li

多项目静态库资源

WTL中,可使用以下方式加载文件资源. CResource res;if( !res.Load(type, resource) ){ DWORD dd = GetLastError(); return NULL;} 当resource为资源ID时,会出现错误1813,找不到映像文件中指定的资源类型 其实具体原因是CResource中使用的::FindResource第一个参数hModule错误 解决方案: 1.编辑启动项目的资源文件.rc,将使用的静态项目资源包含,如下 3(序号) TEXTIN

iOS 静态类库 打包 C,C++文件及和OC混编

iOS 静态类库 编译 C,C++ 我们都知道,OC 原生支持C, 在 创建的 OC类的 .m 里面,可以直接编写C的代码: 同样 Xcode 也支持 OC ,C++的混编,此时,我们通常把OC创建的 .m 文件,手动修改为 .mm 文件以支持 oc c++的混编 基于上面的特性,我们在打包静态类时,可以编译C,OC,C++ 以及三者混合的代码: 因为大多数夸平台的算法库代码都是C或是C++写的,我们利用Xcode编译成静态类库,可以非常安全的提供给别人使用 如下示例: 一:静态库打包 C 代码

【转】iOS静态库 【.a 和framework】【超详细】

原文网址:https://my.oschina.net/kaqijiang/blog/649632 一.什么是库? 库是共享程序代码的方式. 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种.iOS中的静态库有 .a 和 .framework两种形式:动态库有.dylib 和 .framework 形式,后来.dylib动态库又被苹果替换成.tbd的形式. 二.静态库与动态库的区别? 静态库: 链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝.

使用Xcode 5创建Cocoa Touch Static Library(静态库)

转自:http://blog.csdn.net/jymn_chen/article/details/21036035 首先科普一下静态库的相关知识: 程序编译一般需经预处理.编译.汇编和链接几个步骤.对于我们项目中的一些公共代码,如果想要对其进行复用,可以把这些代码编译成一个静态库文件.在链接步骤中,链接器会从库文件中取得对应的代码并生成可执行文件.静态库的执行文件中包含了库中的完整代码,但是多次使用会产生多份冗余拷贝. 静态库和动态库的区别在于静态库在链接阶段被复制,与程序的运行阶段无关:动态

静态库和动态库详解

1.什么是库,为什么使用库? 库是共享程序代码的方式,一般分为静态库和动态库:库实现了iOS程序的模块化,将某些特定的功能模块化为库的格式方便分享和使用! 2.静态库和动态库有什么特点? 异同点: 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝. 动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序可以共用,节省内存. 共同点: 静态库和动态库都是闭源库,只能拿来满足某个功能的使用,不会暴露内部具体的代码信息,而从github上下载的第三

标准IO的简单应用,动静态库,读取系统时间并打印,模拟ls -l功能

2015.2.27星期五,小雨 标准IO实现的复制功能: #include <stdio.h>#include <errno.h> #define N 64 int main(int argc, char *argv[]){ int n; char buf[N]; FILE *fps, *fpd; if(argc < 3) { printf("usage : %s <src_file><dst_file>\n",argv[0]);