【问题标题】:command line debug build project Undefined symbols for architecture i386命令行调试构建项目架构 i386 的未定义符号
【发布时间】:2016-09-20 03:37:25
【问题描述】:

运行xcodebuild -target szapp 返回:

CONFIGURATION_BUILD_DIR=$/Users/szmall/Documents/new12/trunk/head/ShiZu -configuration Debug build -sdk iphonesimulator9.2 ONLY_ACTIVE_ARCH=NO VALID_ARCHS='arm64 armv7s armv7 i386'
build my project have this error:
Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_QQApiAudioObject", referenced from:
      objc-class-ref in libSocialQQ.a(UMSocialQQHandler.o)
  "_OBJC_CLASS_$_QQApiImageObject", referenced from:
      objc-class-ref in libSocialQQ.a(UMSocialQQHandler.o)
  "_OBJC_CLASS_$_QQApiInterface", referenced from:
      objc-class-ref in libSocialQQ.a(UMSocialQQHandler.o)
  "_OBJC_CLASS_$_QQApiNewsObject", referenced from:
      objc-class-ref in libSocialQQ.a(UMSocialQQHandler.o)
  "_OBJC_CLASS_$_QQApiTextObject", referenced from:
      objc-class-ref in libSocialQQ.a(UMSocialQQHandler.o)
  "_OBJC_CLASS_$_QQApiVideoObject", referenced from:
      objc-class-ref in libSocialQQ.a(UMSocialQQHandler.o)
  "_OBJC_CLASS_$_SendMessageToQQReq", referenced from:
      objc-class-ref in libSocialQQ.a(UMSocialQQHandler.o)
  "_OBJC_CLASS_$_TencentOAuth", referenced from:
      objc-class-ref in libSocialQQ.a(UMSocialQQHandler.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

但 libSocialQQ.a 存在于 Link Binary With Libraries。

并且使用 xcode 运行我的项目可以构建成功。请帮帮我,谢谢!

【问题讨论】:

  • 问题已解决。 libSocialQQ.a不包含i386的代码,但包含x86_64的代码,所以可以使用以下命令行:xcodebuild -target szapp CONFIGURATION_BUILD_DIR=$/Users/szmall/Documents/new12/trunk/head/ShiZu -configuration Debug build -sdk iphonesimulator9.2 ONLY_ACTIVE_ARCH=NO VALID_ARCHS='arm64 armv7s armv7 x86_64'

标签: ios xcode xcodebuild i386


【解决方案1】:

从 Target 的 Build Settings -> Architectures -> Valid Architectures 中移除 i386,无需指定。但是,如果您的库不包含 i386 的代码 - 尝试在旧模拟器上运行它会遇到问题。

顺便说一句,您可以使用命令lipo -info libSocialQQ.a 检查支持的架构。

【讨论】:

  • 谢谢安东·马利雪夫。 libSocialQQ.a 不包含 i386 的代码。
  • 但是,为什么它可以在xcode(7.2.1)的模拟器中运行。
  • 这取决于模拟器。例如,如果您选择 iPad Air 或 iPhone 6 模拟器,Xcode 将使用 x86_64 架构构建应用程序。
猜你喜欢
  • 2012-02-09
  • 1970-01-01
  • 2011-08-14
  • 2011-10-30
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多