想目中不免会引入一些静态库,可是有时加入'.a'文件后编译便会报以下错误
ld: warning: ignoring file ”…/XXX.a”, file was built for archive which is not the architecture being linked (armv7): “…/XXX.a” Undefined symbols for architecture armv7: "_OBJC_CLASS_$_XXX", referenced from: objc-class-ref in XXX.o
百度得到的第一页的大部分答案是找不到路径或'.a'文件缺失
参考:http://www.cocoachina.com/bbs/read.php?tid-247940.html
http://blog.csdn.net/kaizi318/article/details/10362673
http://www.cnblogs.com/zxykit/p/5165857.html
http://blog.csdn.net/bindu27227/article/details/23706369
但是这并不能解决这次遇到的问题
这次的文件导入后出现一个奇怪的现象,模拟器和iOS 9.3.1的真机调试都会报上面出现的错误,但是iOS 10.2.1却可以正常运行。
问题大体可以定位到以下几处:
1.工程没有找到导入的'.a'的路径。
解决:查看Library Search Paths看看是否包含了相应的静态库的路径(参考http://blog.csdn.net/u012703795/article/details/24464837)。
2.导入的'.a'文件有问题
解决:查看'.a'文件支持的arm指令集(参考:http://stackoverflow.com/questions/34844932/error-ld-warning-ignoring-file-libfile01-a-file-was-built-for-archive-which
和 http://blog.csdn.net/lvxiangan/article/details/42486731)
经过上面的操作后发现这次导入的'.a'文件仅支持arm64,这样的'.a'文件也是醉醉的
于是将Valid Architectures 改为仅有arm64,再次编译运行。。。
这次该好了吧,然而并没有
lb ‘/…/XXX.a’ does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
解决:参考http://blog.csdn.net/zhyl8157121/article/details/48528831
再次运行,OK