最近开发了一款mac OS 应用,其核心逻辑使用go语言编写,并通过cgo编译成静态链接库,提供给swift调用。
然鹅,mac电脑还有很多存量的使用因特尔芯片的设备,因特尔芯片采用的是amd64(x86_64)的cpu架构。这意味着,我想要让自己的mac OS应用支持更多用户可以使用,就必须要打出一个能同在amd64架构cpu的mac os设备上运行,也需要能在arm64架构cpu的mac os设备上运行。
但是,没有一个工具能够直接将go编译成一个同时支持arm64和amd64的静态链接库,那怎么办呢?
Xcode为我们提供了一个工具:lipo,能够实现将多个静态链接库合并成一个。虽然有些麻烦,不能一步到位,但至少能达到目的了。
假如我们已经打出了两个静态链接库,分别是xx_arm64.a、xx_amd64.a。
现在我们只需要执行以下命令,就能将这两个链接库合并成一个。
lipo -create xx_arm64.a xx_amd64.a -output xx.a
没错,就是这么简单。
可以用lipo -info验证一下:
MacBook-Pro-2:export_c wjy$ lipo -info xx.a
Architectures in the fat file: xx.a are: x86_64 arm64
其中x86_64就是amd64。
参考文献: