编译报错symbol(s) not found for architecture x86_64

今天拉了公司一个新项目的代码,使用模拟器运行的时候,编译报错,提示项目中的一个动态库缺少x86_64架构

 warning: ignoring file /Pods/EZOpenSDK/dist/EZOpenSDK/dynamicSDK/EZOpenSDKFramework.framework/EZOpenSDKFramework, missing required architecture x86_64 
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我第一个想到的原因是framework打包的时候没有把模拟器对应的架构给合并进去,导致项目只能在真机上运行,但是当时不能进行真机测试进行验证。

  • 定位到报错信息是项目中的一个动态库。想到一个方法就是利用命令查看该动态库支持的架构类型。我cd到报错的动态库然后利用命令 lipo -info XXXframework去查看。发现确实没有支持x86_64架构
  • 解决方式:1,重新生成支持x86_64架构的动态库。2,使用真机测试。
  • 查看动态库或者静态库支持架构的命令
lipo -info xxxxx.a  // 查看.a形式的或者
lipo -info xxxxframework  // framework形式的
  • 各种架构对应的模拟器或者测试机类型
    armv7,armv7s,arm64都是真机的架构,其中armv7是iPhone4和4s。armv7s是iPhone5和5c,arm64是iPhone5s以及以上的设备。
    模拟器32位处理器测试需要i386架构,模拟器64位处理器测试需要x86_64架构。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容