码迷,mamicode.com
首页 > 移动开发 > 详细

ios交叉编译dylib

时间:2015-03-14 19:46:06      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

ios交叉编译dylib

因多个静态库,libes,libffmpeg,libmt. libpcap 使用不方便

 

在封装一层接口,生成动态库(c代码),由IOS app上层调用。

 

 

 

注意:

ARCH 指定,可以指定多个,向下兼容!

目前为止Apple移动设备默认指令集-------------------------------------------------------------------------------------

armv6 设备: iPhone, iPhone2, iPhone3G, 第一代、第二代 iPod Touch

armv7 设备: iPhone3GS, iPhone4, iPhone4S

                      iPad, iPad2, iPad3(The New iPad), iPad mini

                      iPod Touch 3G, iPod Touch4

armv7s设备: iPhone5, iPhone5C, iPad4(iPad with Retina Display)

arm64 设备: iPhone5S, iPad Air, iPad mini2(iPad mini with Retina Display)

 

使用lipo -info命令 查看动态库信息

input file libmtsql.a is not a fat file

Non-fat file: libmtsql.a is architecture: armv7

也可以用readelf读取头信息。

 

nm命令查看符号信息,以下是一些常见的符号类型
nm输出字符 含义
R Read only symbol. 比如在代码中有一个const MAXDATA = 3095; 则MAXDATA就是一个Read only symbol
N 这是一个调试符号
D 这是一个已经初始化的变量的符号。比如代码中int i = 1和char *str = "Hello"则i和str都是这种类型的符号
T Text段的符号。子程序都是这种符号,比如文件中实现了一个函数function,则function就是这种符号
U 未定义的符号。如果文件中引用了不存在的函数,则这些未定义的函数符号就是这种类型
S 未初始化的符号,比如全局变量int s;则s的符号就是此类型
 
 
当指定多个ARCH结构时, 同一个符号出现多个地址!
 
 
今日遇见问题:
 
IOS_BASE_SDK="8.1"
IOS_DEPLOY_TGT="7.1"
DEVROOT = "$(shell xcode-select -p)/Platforms/iPhoneOS.platform/Developer"
SDKROOT ="$(DEVROOT)/SDKs/iPhoneOS$(IOS_BASE_SDK).sdk"

8.1的iphoneOS编译的动态库, APP 前台调用找不到符号 提示Undefined symbols for architecture armv7s reference from。 前台是在越狱开发环境theos 编译的。

 怀疑:两种连接符号地址不同
 

ios交叉编译dylib

标签:

原文地址:http://www.cnblogs.com/iclk/p/4337996.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!