• .a静态库构架合成


    一、如果类库生成的构架和对应设备的构架不一致,会链接报错

    如果项目中使用类库后,遇到形似Undefined symbols for architecture x86_64(x86_64架构下有未定义的符号)的错误,则为链接错误,该错误只有两种情况:

    1> 项目中没有导入指定的类库

    2> 项目中使用的类库架构(类库生成的设备)和运行项目的设备不同

    二、CPU构架:

    1、精简指令集构架:主要用于移动设备,手机/平板,代表厂商:ARM、IBM

    2、复杂指令集构架:主要用于PC,代表厂商:Intel、AMD

    三、iOS中涉及的架构:

    1、真机:

    armv7:               iPhone4s

    armv7s:             iPhone5、iPhone5C

    arm64/armv8:    iPhone5s及以上

    2、模拟器:

    i386:                  iPhone4s、iPhone5、iPhone5C

    x86_64:             iPhone5s及以上

    四、开发中,使用类库时:

    1、标明不同设备类型使用不同的类库,自己选取

    2、合成构架(即把5个.a文件合成一个.a,无需考虑设备类型问题,缺点:APP包会比较大)

    五、怎么查看类库的构架呢?

    使用命令行工具 lipo -info .a的文件路径

    六、那怎么合成构架呢?

    1、使用命令行工具 lipo -create 类库文件1路径  类库文件2路径  -output  生成的类库路径

    示例:lipo -create  XX/XX/XX.a  KK/KK/KK.a  -output  ZZ/ZZ/ZZ.a

    如果:ZZ/ZZ/ZZ.a  直接写ZZ.a,生成的类库在家目录下

    2、对Xcode进行设置,自动生成合成构架的类库文件

    但是:1、设置后,只能生成真机或模拟器的类库

            2、生成真机的合成架构时,默认没有armv7s类型的 -> 修改设置来添加armv7s类库

        3、再使用方式1对真机和模拟器的构架类库进行合成

        4、比方式1的好处:方法1需要手动合成4次,方法2只需要手动合成1次

    添加armv7s类库设置:

    1、

    2、

  • 相关阅读:
    webpack安装填坑('webpack' 不是内部或外部命令,也不是可运行的程序或批处理文件)
    JS中let和var的区别(附加const声明特点)
    浅谈 var bool= false 和 var bool= new Boolean(false)的区别
    "if (!(""a"" in window)) { var a = 1; } alert(a); 为什么结果是undefined"
    浅谈display: none、visibility: hidden、overflow: hidden、opacity: 0
    10Git服务器搭建
    09Git GitHub
    08Git标签
    07Git查看提交历史
    自举驱动电路原理
  • 原文地址:https://www.cnblogs.com/panda1024/p/6115520.html
Copyright © 2020-2023  润新知