XCode12 模拟器静态库支持arm64架构引发的系列问题

原文作者:Accepted_
原文链接:https://www.jianshu.com/p/d1a0c627d34a

问题一:真机模拟器库无法合并,报错:have the same architectures (arm64) and can't be in the same fat output file

XCode12之前:
编译模拟器静态库支持i386 x86_64两架构
编译真机静态库支持armv7 arm64两架构
使用lipo -create -output命令可以将两个库合并成一个支持模拟器和真机i386 x86_64 armv7 arm64四种架构的胖子库。

XCode12编译的模拟器静态库也支持了arm64,导致出现真机库和模拟器库不能合并的问题。

 

XCode12编译的模拟器库支持arm64架构

have the same architectures (arm64) and can't be in the same fat output file

*解决办法:

1.如果有静态库工程:

 

Build Settings -> Excluded Architectures里按照这样设置一下,再编译合并就不会报错了。

Excluded Architectures

2.如果手里只有.a或.framework文件
使用lipo remove命令将模拟器库的arm64架构移除

 

$ lipo XXX.a -remove arm64 -output XXX.a

问题二:静态库工程编译模拟器库报错ld: in XXX.a(XXXXXXX.o), building for iOS Simulator, but linking in object file built for iOS, for architecture arm64

这个是出在静态库工程中包含其他已经编译好的静态库,且该静态库是真机模拟器合并胖子库(支持四种架构)。
由于这个胖子库只支持真机的arm64但不支持模拟器arm64,所以出现了以上报错。
如果出现上述问题,也是去Build Settings -> Excluded Architectures里按照这样设置一下,再编译模拟器库就不会报错了。

Excluded Architectures

 

问题三:项目模拟器运行报错building for iOS Simulator, but linking in object file built for iOS

在Build Settings里User-Defined里是否有个VALID_ARCHS。看看是否有x86_64架构。没有的话填上。

*资料来源:https://www.jianshu.com/p/f1436462c825



原文作者:Accepted_
原文链接:https://www.jianshu.com/p/d1a0c627d34a
 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要编译Mac libavif arm64静态库,您需要执行以下步骤: 1.安装Xcode和命令行工具: 在Mac上安装Xcode和命令行工具非常简单。您只需打开终端并输入以下命令即可: ``` xcode-select --install ``` 2.安装Homebrew: 在Mac上安装Homebrew也很简单。您可以在终端中输入以下命令: ``` /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" ``` 3.安装依赖项: 在终端中输入以下命令来安装所有必需的依赖项: ``` brew install cmake automake libtool nasm ``` 4.下载libavif: 在终端中输入以下命令来下载libavif: ``` git clone https://github.com/AOMediaCodec/libavif.git ``` 在下载完成后,切换到libavif目录: ``` cd libavif ``` 5.配置构建: 在终端中输入以下命令来配置构建: ``` cmake -B build -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=/usr/local -DAVIF_CODEC_DAV1D=ON -DAVIF_CODEC_AOM=OFF ``` 解释一下: - -B build:将构建文件放在一个名为“build”的目录中 - -DBUILD_SHARED_LIBS=OFF:生成静态库而不是共享库 - -DCMAKE_INSTALL_PREFIX=/usr/local:将安装位设置为/usr/local - -DAVIF_CODEC_DAV1D=ON:启用dav1d解码器 - -DAVIF_CODEC_AOM=OFF:禁用aom解码器 6.编译: 在终端中输入以下命令来编译: ``` cmake --build build --config Release ``` 7.安装: 在终端中输入以下命令来安装静态库: ``` sudo cmake --install build --config Release ``` 至此,您已经成功编译了Mac libavif arm64静态库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值