因多个静态库,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 编译的。
怀疑:两种连接符号地址不同
时间: 2024-08-10 00:06:18