编译报错symbol(s)|编译报错symbol(s) not found for architecture x86_64
【编译报错symbol(s)|编译报错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架构。
推荐阅读
- 接口|axios接口报错-参数类型错误解决
- 《Unix网络编程》第一卷第三版|《Unix网络编程》第一卷第三版 源码编译
- maven使用tomcat7插件编译jsp出错
- 嵌入式(编译内核、根文件系统等)
- 打开Anaconda|打开Anaconda Navigator 时报错 error 5 拒绝访问
- 运行报错Cannot|运行报错Cannot find module '@babel/compat-data/corejs3-shipped-proposals’
- Centos6源码编译安装2.4版本http服务步骤
- 一键编译部署Mysql
- 故障分析 | MongoDB 5.0 报错 Illegal instruction 解决
- 防止sql注入