想目中不免會引入一些靜態庫,可是有時加入'.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