ios 模拟器和真机 使用同一静态库

20 篇文章 0 订阅
12 篇文章 0 订阅
今天搞服务器的同事合作写一个demo,服务器那边将之前在linux下已经写好的静态库传过来,我将这些静态库添加到xcode工程中,在模拟器上运行提示 architecture i386类错误,后来看了一些资料总结问题就是 交叉编译 的问题。

我把遇到的情况写一个测试例子代码如下

例如server端写一个静态库:

  1. test.h  
  2. #include <stdio.h>  
  3.   
  4. void test();  

  1. test.c  
  2. #include "test.h"  
  3.   
  4. void test()  
  5. {  
  6.      printf("this is server test static library");  
  7. }  

编译:gcc -c test.c(默认生成与系统一样架构的静态库,如果系统为i386就是i386架构,如果系统为x86_64该静态库就是x86_64架构的)

         ar rcs libtest.i836.a test.o

         gcc -c test.c -arch armv7(这个是指定编译成arm架构的,默认会调用arm-apple-darwin11-llvm-gcc-4.2编译器,有时候版本号有可能会不同)

         ar rcs libtest.armv7.a test.o

最后合并不同架构的静态库 

  1. lipo -create libtest.i386.a libtest.armv7.a  -output libtest.a  
这样在xcode中引入libtest.a和test.h在真机编译和在模拟器编译都OK了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值