目的
主要是使用lipo命令在macOS上创建通用版本的静态库(.a文件),来支持多种架构,如arm64,x86_64。
学习目的:
- 了解mac 不同架构arm64, x86_64
- 了解lipo命令
了解多架构的mac
随着apple发展, 开始逐步将macOS从Intel x86_64架构转向Apple Silicon的arm64架构【M系列 Apple 硅芯片】, 也就是Apple 苹果自己芯片。Apple 宣布 Mac 采用 Apple 芯片的转移计划
至于为什么要转成Apple 芯片, 那其中原因想必不用细说。 总之, 鉴于Intel 芯片被动性, 搞一套自己的它不香吗? 然后兼容自己所有的tv os、 watch os、 macos、 ios一套设备, 形成自己一套强大商业链。什么是苹果硅? 苹果处理器的功能
很明显Intel 芯片 采用x86_64 架构, 苹果芯片 silicon 采用 arm64架构, 然后从intel 芯片到苹果芯片是有一个果断节点, 但也就是为啥我们要写这篇博客原因了, 要兼容两者架构, 因此必须写一个通用版本。
当如果我们谈论体系结构,我们会发现非常重要的差异。 例如,x86处理器(来自Intel)具有CISC架构,该架构在执行复杂操作方面享有很高的性能。 这就是为什么ARM拯救了英特尔和AMD都忽略的RISC架构的原因。 这就是为什么在体系结构级别上我们已经看到了非常重要的差异,它们使一个处理器与另一个处理器完全对立。
lipo
lipo是macOS中的一个命令行工具,用于操作通用二进制文件。它可以用来创建、查看和提取通用二进制文件中的架构。在创建静态库时,lipo允许我们将多个针对不同架构的静态库合并成一个通用静态库。
如何利用lipo编译通用版本静态库
-
编译针对不同架构的静态库
首先,我们需要为每种目标架构分别编译静态库。假设我们可以为x86_64和arm64架构分别编译静态库。这将产生两个独立的静态库文件,例如libMyLib_x86_64.a和libMyLib_arm64.a
-
使用lipo合并静态库
当我们有了针对不同架构