iOS小记--Undefined symbols for architecture i386:

Undefined symbols for architecture i386:

这个错误太常见了,也很磨人。说一下architecture 的概念,架构,计算机上是指内核依赖的指令集,架构的概念来自于把软件构建和建筑建造的类比,基础指令集决定了你的软件的work程度。iOS开发常见arm64(64位处理器5s&&later,mini2&&later)armv7,armv7s(32位处理器,4s,5),i386,x86_64(模拟器)(是我自己总结的,不对之处,请指出)

此类错误属于build不通过,相当于说缺少某些build的必要条件。例如少了点什么或者多了点什么造成的。通常可以在error中读出信息来。带有duplicate就是表示多了,而且xcode会亲切的支持文件名(注意xcode给的类名,变量名是属于它翻译过的)。

下面几条说一下自制静态库的问题。静态库制作图文详解的博客很多,自行百度。这里列出一些常见问题的解决方式(没有一个工具是可以吃遍天的,请多尝试)

1.缺支持的frameworks,此时文件红色,或压根没有 缺少需要支持的framework或者类文件。请添加,常见缺失libc和lic++;

2.compile Sources里没有添加相应的.m 文件,一个你熟悉的类名出现在错误信息当中,去compile Sources检查下

3.自己打包的lib也要保证.m 齐全,同2.注意不要搞错.m和.h。compile Sources当中不需要加入.h文件。加了会错的。类的实现中也不要#import .m 文件,编译器会报错的。

4.-all_load ,这个用于静态库中包含类别时。

5.使用release模式build,保证.a支持所有的architecture。在run schema中使用release模式,这样build出的.a会支持32位和64位。

6.使用lipo 命令 ,命令用于把真机支持和模拟器支持的.a 合并。

lipo -create iphoneos/lib.a iphonesimulator/lib.a -output ./lib.a

lipo -info XXX/lib.a 查看静态库支持的架构

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,273评论 19 139
  • 这几天公司有一个新的需求,就是要将我们开发的某些东西都抽取出来,打个比方我们开发了A项目,可以以后B项目要包含A项...
    黄鱼儿啦啦啦阅读 11,417评论 2 16
  • (原文:How to Create a Framework for iOS作者:Sam Davies 译者:Mr_...
    Yaanco阅读 7,026评论 4 5
  • 一。每次遇到这种错误就头痛,不知道要害死多少脑细胞了,就在这里做个总结吧 可能会遇到这几种错误: Undefine...
    ttdiOS阅读 14,612评论 2 11
  • 有一条回家路,走了半个世纪。 半个世纪,山高水长,很是痛苦得不到你们的消息。 半个世纪,沧桑悲凉,期盼你们回乡之愿...
    简书用户9653856阅读 2,860评论 0 2

友情链接更多精彩内容