[Xcode 12, building for iOS Simulator, but linking in object file built for iOS, for architecture...

背景: xcode版本:12.5xcode macos版本:11.2.2 (20D80)
遇到问题:用模拟器打开项目报上面如下错误,链接不到第三方,缺少架构arm64架构
 [Xcode 12, building for iOS Simulator, but linking in object file built for iOS, for architecture arm64

cocoapods

新公司,用了新Mac开发。但是cocoapods集成第三方的时候报错了

LoadError - dlsym(0x7ff521754650, Init_ffi_c): symbol not found - /Library/Ruby/Gems/2.6.0/gems/ffi-1.14.2/lib/ffi_c.bundle
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'

查阅资料后是发现M1芯片的锅,顺序执行如下代码,问题得以解决

 sudo arch -x86_64 gem install ffi
 arch -x86_64 pod install

模拟器

早期模拟器只支持x86架构
真机对应arm64等
现在M1芯片,模拟器架构从x86变成了arm架构
而很多静态库对模拟器只有x86架构
导致出现运行在M1芯片里,模拟器是arm架构,导致变异链接时,找不到对应的架构从而报错!
解决方案

1.让第三方支持M1芯片架构
2.自己在xcode debug模式下剔除arm64架构

在Build Settings 搜索Exclude 增加上arm64架构

我是采取方案2解决问题的,图如下。

截屏2021-03-09 下午2.21.03.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容