iOS蛋疼崩溃之linker command failed wi

2016-09-01  本文已影响950人  管家頗

造成次崩溃的原因有很多,所以决绝起来十分麻烦,小编用过的方法有:

  1. pod update

  2. 模拟器的问题,不应该选64位的模拟器,选个32位的就可以了!看来自己的问题只能自己解决了,看到别人的方案,自己也得支脑筋!~

  3. 把 Valid Architectures 的值改为 armv7
    过程:
    PROJECT --> Build Settings --> Architectures --> Valid Architectures 他的值本来是 armv7 armv7s (ios6.0下) 把armv7s 去掉即可
    同样的操作
    TARGETS --> Build Settings --> Architectures --> Valid Architectures 做同样的修改

  4. 重新导入第三方库

  5. 由于类名重复造成此种崩溃,找到类名相同的两个类修改其中一个类名

实例

1.Debug-iphonesimulator/MBProgressHUD/libMBProgressHUD.a(MBProgressHUD.o)ld: 14 duplicate symbols for architecture x86_64

1.png

方法:由于有人在其他地方拖入了这个库,所以我用cocopods导入时造成文件重复,删除其中一个即可

2. 导入ShareSDK时报错
Undefined symbols for architecture x86_64:
"OBJC_CLASS$_QQApiInterface", referenced from:
objc-class-ref in AppDelegate.o
"OBJC_CLASS$_TencentOAuth", referenced from:
objc-class-ref in AppDelegate.o
"OBJC_CLASS$_WeiboApi", referenced from:
objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

2.png 解决方案:
Xcode升级到6.1.1 默认让所有App都通过64位编译器编译。原来在Xcode6.0的时候默认的Architectures只有(arm7,armv7s),到6.1.1默认就带上arm64的参数了。
3.png
  1. 把1.选中Targets—>Build Settings—>Architectures。
    把build active architectures only 改为 NO。
  2. 把最下面的Valid Architectures中的arm64参数删掉就可以了
    或者:
    双击Architectures,选择other,删除
    $(ARCH_STANDARD),然后增加armv7和armv7s(写上:$(ARCHS_STANDARD_32_BIT))。
  3. clean 再build。

结果设置如下图:


4.png
上一篇 下一篇

猜你喜欢

热点阅读