Xcode 之自己编译静态库

Xcode编译静态库方法 这是一个xcode静态库编译方法的文档 欢迎大家下载 立即下载
今天介绍下,如何利用Xcode,新建一个静态库,以及如何编译成i386、armv7、armv7s 等平台架构。

开发环境:MAC OS X 10.9.4 + Xcode 5.0.2

背景知识:库分两种:静态库(.a、.lib) 和 动态库(.so、.dll),.a 和 .so 为linux平台下库后缀名,.lib 和 .dll 为windows平台下库后缀名。【对静态库和动态库不熟悉的,请参见博文:http://www.cnblogs.com/skynet/p/3372855.html 】。ios 开发,只允许使用.a静态库,不能像android那样,可以使用.so 动态库,这也就是为什么网上的第三方组件,像百度、高德地图、新浪微博、友盟等sdk提供的都是一些.a 静态库文件 + 一些.h 头文件。i386架构下的静态库,是模拟器使用的;armv7、armv7s等是真机使用的静态库(注:i386架构下的静态库,在模拟器上运行正常,在真机上无法运行,编译会报错,两者不可混用,后面会详细介绍)。好了,废话不多说,下面步入正题:

一:新建静态库

1,打开Xcode,-》create a new xcode project  -》Framework & Library - > Cocoa Touch Static Library,next。


2,填写 Product Name , Organization Name, Company Identity, 然后next。


3,创建好项目后,目录结构如下所示:


4,打开“MyCommon.h”文件,添加一个静态方法:+(void)myPrint:(NSString *)text; 

5,  打开“MyCommon.m”文件,添加方法体:

    +(void)myPrint:(NSString *)text  
    {  
        NSLog(@"myPrint:%@",text);  
    }  
6,保存,编译,到此,我们的静态库就制作成功了。如下图所示:


其中,要注意:图中红色1处,表示选中 IOS Device ,此时会生成 armv7、armv7s、arm64 架构的静态库;选中任一ios模拟器,则会生成i386架构下的静态库;图中红色2处,如果为红色,表示静态库尚未生成,如果为黑色,表示静态库生成成功。(ps:建议先选ios device 生成静态库,再选模拟器生成静态库)

7,在上图中红色2处,右键,“show in Finder”,打开文件夹,就会看到我们生成的静态库文件了。



8,现在生成的是Debug版本,如果想生成release版本的,可以在schema里编辑一下:菜单栏,Product - > Schema - > Edit Schema ,或者直接快捷键:command + < ,打开对话框,左边选择“Run”,右边 Build Configuration 中选择 Release ,ok.


重新编译运行一下,release版本就生成了。重新打开刚才的文件夹,就会看到了。


至此,我们的静态库就制作完毕了。下面介绍下如何使用:

二、静态库的使用

1,打开Xcode,create a new xcode project - 》 Empty Application,next。Product name:Test ,next,工程目录如下:


2,在Supporting Files 中新建 Group:MyLibs,引入我们刚才自己生成的.a静态库和.h 头文件。【注意:要使用iphonesimulator 文件夹下的静态库,即i386架构的,否则,在模拟器上会编译失败。】之后,在"AppDelegate.m"中引入“MyCommon.h”头文件,在application:didFinishLaunchingWithOptions 方法中添加 这么这行代码:

[MyCommon myPrint:@"hello world"];

如下图所示:


保存,编译,运行,就会看到图中4处红色部分:表示我们自己的静态库调用成功了。

3,如果在上一步中,我们使用了真机的.a静态库文件,当用模拟器编译运行工程时,会提示如下错误:


在错误信息中,我们也可以看到,找不到必需的i386架构的 libMyCommon.a 静态库文件。(相同的,如果使用真机测试,工程里却添加了模拟器使用的i386架构的静态库文件,也会报错,此时错误信息会诸如:missing required architecture armv7、armv7s 等)

三、教大家如何查看静态库的架构信息,以及如何合并模拟器和真机静态库。

1,首先打开Mac 终端,切换到静态库所在文件夹,输入如下命令:

 lipo -info libMyCommon.a

回车,接着就会看到静态库的架构信息了,如图所示:


此时,我们可以知道,上图中使用的静态库是armv7等架构的,即是真机使用的静态库。

2,合并模拟器和真机静态库,在终端中输入命令:

 lipo -create  libMyCommon_iphone.a  libMyCommon_simulate.a  -output  libMyCommon.a

,之后,在终端当前文件夹下,就会看到合并后的静态库文件 libMyCommon.a 了。


3,在刚才的测试工程中,换用我们刚刚生成的合并版本的静态库文件,这样,不管模拟器,还是真机,都可以直接调试运行了。

【PS:如有不对或表述不清之处,欢迎大家留言。】

原文地址:http://blog.youkuaiyun.com/jiajiayouba/article/details/38420517

AI应用架构师实战:高等教育智能课程推荐系统开发 性能:选课季并发量达1000QPS,推荐响应时间≤500ms(否则学生不耐烦)。数据隐私:符合《教育数据安全管理规范》,学生姓名、学号等敏感信息需匿名化存储。可扩展性:支持新增课程类型(如MOOC、实践课)、新增数据源(如竞赛获奖记录)。教育AI要“以教为中心”:不能纯技术驱动,要和教育工作者深度合作(如教师参与定义课程的前置关系)。数据是核心:数据质量决定推荐效果,要重视数据治理和隐私保护。持续迭代:教育需求是动态的(如每年新增课程、学生目标变化),要定期收集用户反馈,更新模型和策略。张三。 阅读详情

相关推荐

告别手动拍照!用Python+JAKA机械臂+D455相机实现全自动手眼标定(附完整代码)

本文详细介绍了如何利用Python脚本实现JAKA机械臂与Intel RealSense D455相机的全自动手眼标定流程,提供从硬件配置到代码实现的完整解决方案。通过自动化标定,显著提升工业自动化中的精度和效率,适用于机器人视觉领域的二次开发需求。

weixin_30555125的博客 521

C++源码Xcode生成静态库

C++源码Xcode生成静态库

liuyongjie1992的博客 1041

[原创]Linux 802.11n CSI tool Monitor模式

Linux 802.11n CSI tool Monitor模式 使用AP模式的缺陷在于ping 命令速度比较慢,且不能精确控制发送的参数,比如接收的包数量是不可控的。Monitor模式可以调制发送速率、发包数量、发送天线个数、HT模式、short/long guard interval等等,因此调通Monitor模式是必须的。期间参考了博主沃一德的CSI Tool安装使用讲解,对他的工作表示感...

u014645508的博客 1万+

Mac_XCode编译ios静态库

在 xcode 下编译并使用 ios 的 .a 静态库 整个过程也类似 vs 编译 lib静态库 新建静态库工程 File -> New -> Project,选择静态库模板 工程命名为 StaticLib 库还没有编译出来是红色的 添加接口 在 StaticLib 文件夹下创建 选择 类文件,才能同时创建 .h头文件 和 .m实现文件 命名类为 Actor 创建 添加代码 Actor.h

. 3212

【安徽理工大学】一文带你高分拿下计算机考研复试(85+的秘密)

一文带你高分拿下安徽理工大学计算机考研复试(85+的秘密)

猫天意的博客 1523

Dify工作流构建案例:迭代驱动的多维深度搜索

为了克服这些挑战,我们可以设计一个能够智能协同内部知识库与外部互联网搜索,并最终由大型语言模型(LLM)进行深度整合与精准回答的高级工作流。

同名公众号:dify实验室 2291

xcode 编译静态库

这里以libcurl 为例:       1.首先需要下载 libcurl  http://curl.haxx.se/download.html .解压...       2.打开mac上的 terminal :切换到 解压的libcurl 的目录下...      3.编译配置:    export CC=/Developer/Platforms/iPhoneOS.platform/De

typename 记录点滴 6632

PCIe 物理层(Physical Layer)详解

PCIe物理层关键技术解析 PCIe物理层作为协议栈底层核心,承担着比特流传输、链路训练与电气特性管理等关键功能。该层采用分层架构,包含逻辑物理层(负责编解码/加扰)和电气物理层(处理信号收发)。关键技术亮点包括: 智能链路管理:通过LTSSM状态机实现11种状态转换,涵盖链路检测(Detect)、协商(Polling/Configuration)、功耗管理(L0s/L1)等全生命周期控制 高效编码方案:Gen1/Gen2采用8b/10b编码(20%开销),Gen3+升级为128b/130b(仅1.5%开销

珂珂可爱多 725

xcode生成静态库.a

一、生成静态库1.打开 Xcode 创建一个新的 Static Library 工程,取名applestudio2.创建工程完毕后,简化目录结构删除系统自动创建的同名类:applestudio.h和applestudio.m把自己的代码复制进去,如例子:guiconnect.h 和 guiconnect.m3.设置适配所有模拟器架构:project -> buildSeting -> Build Active Architecture Only 设为 NO。

haoxuhong的博客 2458

使用Jacob实现将Word文件转换为Pdf文件

如果是首次使用 jacob,建议先直接从 github上下载 zip包,因为在实现Word转Pdf的时候,不仅需要用到 jacob.jar,还需要 jacob.dll 库,而zip包中都有。官方使用文档可以参考:https://github.com/freemansoft/jacob-project/blob/main/docs/UsingJacob.md。// 如果安装的是微软的 Office,需要使用 Word.Application。

qq_41672950的博客 750

c语言压力变送器程序设计,基于单片机的压力变送器设计

基于单片机的压力变送器设计(任务书,开题报告,外文翻译,论文15000字,代码)摘要随着工业化水平的不断提高,新型智能仪表在工业生产过程中运用也越来越广泛,同时对输出数据的准确检测和处理也变得至关重要。生产过程的运行和设备安全是极其重要的,那么如何实现对其精确的检测呢?众所周知,在工业生产过程中有一个很重要参数——压力,显然这个参数是一个必不可少的条件。故而,研究智能压力变松器系统对工业生产有着不...

weixin_33681561的博客 1962

xcode 编译静态库 libcurl

1.首先需要下载 libcurl  http://curl.haxx.se/download.html .解压...       2.打开mac上的 terminal :切换到 解压的libcurl 的目录下...      3.编译配置:    export CC=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-ap

dkqiang的专栏 3436

基于STM32设计自动输液监测系统(241)

该系统集成了液位传感模块、光电传感器、电机模块、按键模块和OLED显示屏等多个功能模块,以实现全面的输液过程监控和控制。液位传感模块能够实时监测输液瓶中的液位,当液位到达限定值时,系统会自动控制步进电机夹紧输液管,并发出报警提醒,确保输液过程不会因液位过低而中断。

1341

linux编译poco静态库,Xcode 编译poco c++静态库

什么是poco c++1.一系列C++类库,类似Java类库,.Net框架,Apple的Cocoa;2.侧重于互联网时代的网络应用程序3.使用高效的,现代的标准ANSI/ISO C++,并基于STL4.高可移值性,并可在多个平台下可用5.开源,并使用Boost Software License发布6.不管是否商用,都完全免费编译供iOS使用的静态库在iOS开发中主要有iPhone模拟器和iPhon...

weixin_39760857的博客 484

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

xcode 编译静态库的问题

1. 今天在xcode上编译了一个c++程序得静态库,另外一个app去引用这个静态库,编译时候出现警告和错误提示如下: ld: warning: ignoring file ../Test/libTest.a, missing required architecture i386 in file Undefined symbols for architecture i386分析:我是在模拟器上编

kkk0526的专栏 1398

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Xcode 编译静态库

  有时候,我们需要将一部分经常用到的代码提取出来用来复用,或者说需要用到c++的代码的时候,可以通过编译成静态库的方式来使用。本文中使用的Xcode版本是8.3,静态库制作过程和其他版本基本一样,可能出现的内容有所差别,但并不影响制作。   1.创建一个静态库工程。   选择iOS->Cocoa Touch Static Library,如下图所示。   创建完成后,工程中会出现...

weixin_30466421的博客 236

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

xcode 中使用ffmpeg 编译的静态库

1、在ffmpeg 官网下载最新的ffmpeg 源码:如下git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg2、编译ffmpeg 直接 执行 ./configure 有些mac 会报一些问题 这是本人遇到的情况Undefined symbols for architecture x86_64: "_ff_filters_ssse3", re

CodySnow的博客 2985

[XCODE 编译静态库] xcode 4 制作静态库详解 .a文件

最近在做Apple的IOS开发,有开发静态库的需求,本身IOS的开发,只允许静态库或者Framework。在Xcode上没有找到允许编译,如同Android上的*.so和Win32上的dll这样的说法。不过Framework这样的框架,估计也是类似动态库的实现,不过没有具体研究过,后续继续深入研究。 我这个文档的静态库的开发是基于Xcode4.2和iOS SDK5.0编写的。Xcode4跟之

Just Do It 1092

Xcode添加静态库以及编译选项配置常见问题

一,Xcode编译出现Link错误,出现"duplicate symbols for architecture i386 clang"提示. 问题:链接时,项目有重名文件. 解决: 根据错误提示,做如下检查: 1.Taraget->Build Settings->Link Binary With Libraries检查是否有重复lib. 2.全工程搜索下重名文件,决定如何删除. 二

jesse881025的专栏 440

Xcode环境下osip,eXosip, openssl的静态库编译方法(编译出来给IOS使用)

ios版本需要以下静态库的支持: osip2 eXosip2 openssl。 具体编译方法: 2.4.1osip2和eXosip2的编译方法: 首先打开终端,进入osip2或者eXoisp的根目录,然后进行详细配置以生成makefile。 具体的参数,可以通过$ ./configure --help 查看“详细”说明 iPhone模拟器: 1.osip2

SeedKunYu的专栏 1275

xcode合并模拟器和真机静态库的编译

最近在做Apple的IOS开发,有开发静态库的需求,本身IOS的开发,只允许静态库或者Framework。在Xcode上没有找到允许编译,如同Android上的*.so和Win32上的dll这样的说法。不过Framework这样的框架,估计也是类似动态库的实现,不过没有具体研究过,后续继续深入研究。 我这个文档的静态库的开发是基于Xcode4.2和iOS SDK5.0编写的。Xcode4跟之

yuanya的专栏 1329
上一篇: xcode 更改静态库输出路径
下一篇: Xcode 6制作动态及静态Framework
cbbbc
博客等级 码龄15年 609粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值