Found an unexpencted Mach-O header code: 0x72613c21

问题

xcode打包出现问题:Found an unexpencted Mach-O header code: 0x72613c21
具体问题描述点击我

解答:

参考1,从编译与连接过程去思考
.c文件预处理为.i文件,再编译为.s文件,再汇编转为.o文件,然后通过链接(静态链接或者动态链接),然后链接到可执行文件.so,运行

这里我们的问题关键在于 链接这个步骤;
链接的过程,也就是符号重定位;c/c++程序的编译是以文件为单位进行的,因此每个c/cpp文件也叫做一个编译单元,源文件先是被编译成一个个目标文件,再由连接器把这些目标文件组合成一个可执行文件或库,链接的过程,其核心工作是解决模块间各种符号(变量、函数)相互引用的问题,对符号的引用本质是对其在内存中具体地址的引用,因此确定符号地址编译,链接,加载过程中一项不可缺少的工作,这就是所谓的符号重定位。本质上来说,符号重定位要解决的是当前编译单元如何访问【外部】符号的问题

参考2
参考3
当我把原本在Embedded Binaries这里的库,全部删除,然后通过Link Binary with Libraries直接导入后,会报上面的出错,即:image not found

解决方法是:在Build Phases上添加分组Copy Files,把Embedded Binaries删除的库,导入这里来就可以。

加入到Embedded Binaries的包其实都是静态库,虽然是以.framework之名,以动态库的方式打成的动态库,本质上还是静态库

happy coding~

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容