美文网首页IOS-TipsiOS 开发 iOS开发记录
iOS编译库文件时出现的问题

iOS编译库文件时出现的问题

作者: 齐滇大圣 | 来源:发表于2014-12-11 13:04 被阅读10112次

    1. 警告:directory not found for option “xxxxxxxx” 文件路径未找到 **

    • 选择工程, 编译的 (targets)
    • 选择 Build Settings 菜单
    • 查找 Library Search Paths 和 Framework Search Paths, 删掉编译报warning的路径即OK
      详细步骤图文参考

    2. missing required architecture i386 in file “xxxxxx/.a” 说明你的这个library文件是为Device (ARM架构)设计的,不支持Simulator (i386架构)

    相关知识
    参考stackoverfollow
    arm架构问题
    手机的架构是为arm架构

    • armv6
      iPhone
      iPhone2
      iPhone3G
      第一代和第二代iPod Touch
    • armv7
      iPhone4
      iPhone4S
      armv7s
      iPhone5
      iPhone5C
    • arm64
      iPhone5S

    现在app store规定提交的应用必须包含arm64.

    xcode里Architectures这个属性

    这是指你想支持的指令集,比如:armv7,armv7s,或者可以用$(ARCHS_STANDARD_32_BIT)这样的参数

    该编译选项指定了工程将被编译成支持哪些指令集,支持指令集是通过编译生成对应的二进制数据包实现的,如果支持的指令集数目有多个,就会编译出包含多个指令集代码的数据包,造成最终编译的包很大。

    xcode工程里有Build Active Architecture Only这个属性

    这个属性设置为yes,是为了debug的时候编译速度更快,它只编译当前的architecture版本。
    而设置为no时,会编译所有的版本。

    编译出的版本是向下兼容的,比如你设置此值为yes,用iphone4编译出来的是armv7版本的,iphone5也可以运行,但是armv6的设备就不能运行。

    所以,一般debug的时候可以选择设置为yes,release的时候要改为no,以适应不同设备

    library not found for -lMobClickLibrary

    在other link flag 里删除-l "MobClickLibrary"

    我遇到的问题

    1. 微信demo下载下来运行出现 missing required architecture i386 in file “xxxxxx/libWeChatSDK.a”问题,用终端查看了一下这个库文件只支持 armv7,arm64
    在终端里查看你的.a库是不是支持i386

    解决方法:

    • 找找看有没有支持i386的库文件(下载SDK,要下载的sdk里面的那个libWeChatSDK.a才有支持i386的,里面有两个文件夹 WeChatSDK_1.5WeChatSDK_1.5_OnlyIphone,选择WeChatSDK_1.5)
      WeChatSDK_1.5
      有i386的libWeChatSDK.a
    • 使用真机测试

    2.解决架构问头后在工程里出现了以下问题:
    Undefined symbols for architecture x86_64:
    "operator delete", referenced from:
    +[WeChatApiUtil EncodeBase64:] in libWeChatSDK.a(WeChatApiUtil.o)

    屏幕快照 2014-12-11 下午3.43.16.png

    解决方法:

    • 果断加上libc++.dylib

    相关文章

      网友评论

      • ab3450787797:Undefined symbols for architecture armv7:
        "_OBJC_CLASS_$_CTTelephonyNetworkInfo", referenced from:
        objc-class-ref in libWeChatSDK.a(MTAHelper.o)
        ld: symbol(s) not found for architecture armv7
        clang: error: linker command failed with exit code 1 (use -v to see invocation)

        这个是什么问题啊?
        devchena:@瞧那篱笆里的女孩儿 你怎么解决的你这个问题
      • 齐滇大圣:@fe814ccc15b5 没用过monaca,一般支持了armv7就没问题了
      • fe814ccc15b5:最新的sdk不支持armv7s。如何添加上对这个的支持啊!我用的monaca做开发,没法在编译的时候跳过armv7s的支持!
      • 齐滇大圣:@Lock 嗯是的,后面添加的libc嗯根据那个错误自己网上搜的,什么原因我也不知道
      • 47f7429b33a9:你好,请教下以后如果要发布的话是不是就可以替换成onlyphone文件夹下的文件?要不然为什么出两个文件夹哩?还有最后一个问题你是怎么知道还需要添加libc++.dylib的?微信sdk里面的readme居然没写上。。。
      • adu443:可以了
      • adu443:你好,请问"终端查看了一下这个库文件",这个为什么我的Mac用不了,需要安装什么吗?

      本文标题:iOS编译库文件时出现的问题

      本文链接:https://www.haomeiwen.com/subject/wqvntttx.html