今天pod install 了一个第三方库,然后command+B就出现了下面的报错信息,莫名其妙,之前真机运行一点问题没有。。。
ld: warning: ignoring file xxxxxx.a, missing required architecture x86_64 in file xxxxx.a (2 slices)
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_xxxxx", referenced from:
objc-class-ref in xxxxx.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
报错的.m文件中导入了另个一第三方静态库的头文件,但是两个库根本没有关联不存在重复导入的问题。
那么就只好去搜索"linker command failed with exit code 1" 网上一大堆解决办法,挨个儿试
1、说文件重复添加的,以防万一那我们去项目里搜索一下,确实只有一个 pass
如果出现重复添导致的该报错就去找Build settings->Linking->Other Linker Flags
把里面的属性改为-all_load 或者 -ObjC
2、说导入的静态库.a文件路径出错
到Build settings->Search Path->Library Search Paths 下面重新修改路径
command+shift+k 然后command+B 依然报错
3、找到报错的.m文件勾选 Target Membeship 下面的项目名
前往.m文件 Target Membeship 下面的已经是勾选状态 (勾选之后第二点中提到的路径,Xcode会自动添加)
4、删掉项目中的.a文件重新添加,依然无效
emmmm。。。。可能搜索的关键词不对
重新搜索“ignoring file xxxxxx.a, missing required architecture x86_64 in file xxxxx.a (2 slices)”
结果中有提到.a文件对各种架构的支持情况。
打开终端,进入.a的文件目录,运行 lipo -info xxxxx.a
出现的信息只有armv7、arm64
意思是只支持真机,再看我Xcode选择的是iPhone8模拟器,果断连上手机 Command+B这次没问题了。
第一次使用lipo命令,感兴趣的可以去网上搜一下,生成.a和.framework的都会用到这个命令
我也去学习一下。。。
网友评论