架构的未定义符号i386将项目升级到iOS 5

Tyl*_*ler 19 iphone ios ios5

我一直在搜索SO和谷歌,但还没有发现任何有用的东西.

我们正在更新现有的iOS项目以针对iOS 5进行构建.

我们的项目有两个目标,第一个是我们的静态库,第二个是单元测试应用程序(GHUnit).

构建单元测试目标时,它成功编译静态库,但是无法使用以下输出链接它:

Ld /Users/XXXXXX/Library/Developer/Xcode/DerivedData/XXXXXXLibrary-egoqfplddstqvwaigwuiqfqplcax/Build/Products/Debug-iphonesimulator/UnitTests.app/UnitTests normal i386
    cd /Users/XXXXXX/Documents/iOS/trunk
    setenv MACOSX_DEPLOYMENT_TARGET 10.6
    setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang -arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk -L/Users/XXXXXX/Library/Developer/Xcode/DerivedData/XXXXXXLibrary-egoqfplddstqvwaigwuiqfqplcax/Build/Products/Debug-iphonesimulator -F/Users/XXXXXX/Library/Developer/Xcode/DerivedData/XXXXXXLibrary-egoqfplddstqvwaigwuiqfqplcax/Build/Products/Debug-iphonesimulator -F/Users/XXXXXX/Documents/iOS/trunk -F/Users/XXXXXX/Documents/iOS/trunk/UnitTests -filelist /Users/XXXXXX/Library/Developer/Xcode/DerivedData/XXXXXXLibrary-egoqfplddstqvwaigwuiqfqplcax/Build/Intermediates/XXXXXXLibrary.build/Debug-iphonesimulator/UnitTests.build/Objects-normal/i386/UnitTests.LinkFileList -mmacosx-version-min=10.6 -Xlinker -objc_abi_version -Xlinker 2 -ObjC -all_load -Wl -Xlinker -no_implicit_dylibs -D__IPHONE_OS_VERSION_MIN_REQUIRED=50000 -framework SystemConfiguration -framework CoreLocation -framework CoreData /Users/XXXXXX/Library/Developer/Xcode/DerivedData/XXXXXXLibrary-egoqfplddstqvwaigwuiqfqplcax/Build/Products/Debug-iphonesimulator/XXXXXX.a -framework GHUnitIOS -framework CoreGraphics -framework Foundation -framework UIKit -o /Users/XXXXXX/Library/Developer/Xcode/DerivedData/XXXXXXLibrary-egoqfplddstqvwaigwuiqfqplcax/Build/Products/Debug-iphonesimulator/UnitTests.app/UnitTests

    Undefined symbols for architecture i386:
      "_llvm_gcda_start_file", referenced from:
          ___llvm_gcov_writeout in XXXXXX.a(NSObject+SBJSON.o)
          ___llvm_gcov_writeout in XXXXXX.a(NSString+SBJSON.o)
          ___llvm_gcov_writeout in XXXXXX.a(SBJsonBase.o)
          ___llvm_gcov_writeout in XXXXXX.a(SBJsonParser.o)
          ___llvm_gcov_writeout in XXXXXX.a(SBJsonWriter.o)
          ___llvm_gcov_writeout in XXXXXX.a(XXXXXXReachability.o)
          ___llvm_gcov_writeout in XXXXXX.a(XXXXXX.o)
          ...
      "_llvm_gcda_emit_function", referenced from:
          ___llvm_gcov_writeout in XXXXXX.a(NSObject+SBJSON.o)
          ___llvm_gcov_writeout in XXXXXX.a(NSString+SBJSON.o)
          ___llvm_gcov_writeout in XXXXXX.a(SBJsonBase.o)
          ___llvm_gcov_writeout in XXXXXX.a(SBJsonParser.o)
          ___llvm_gcov_writeout in XXXXXX.a(SBJsonWriter.o)
          ___llvm_gcov_writeout in XXXXXX.a(XXXXXXReachability.o)
          ___llvm_gcov_writeout in XXXXXX.a(XXXXXX.o)
          ...
      "_llvm_gcda_emit_arcs", referenced from:
          ___llvm_gcov_writeout in XXXXXX.a(NSObject+SBJSON.o)
          ___llvm_gcov_writeout in XXXXXX.a(NSString+SBJSON.o)
          ___llvm_gcov_writeout in XXXXXX.a(SBJsonBase.o)
          ___llvm_gcov_writeout in XXXXXX.a(SBJsonParser.o)
          ___llvm_gcov_writeout in XXXXXX.a(SBJsonWriter.o)
          ___llvm_gcov_writeout in XXXXXX.a(XXXXXXReachability.o)
          ___llvm_gcov_writeout in XXXXXX.a(XXXXXX.o)
          ...
      "_llvm_gcda_end_file", referenced from:
          ___llvm_gcov_writeout in XXXXXX.a(NSObject+SBJSON.o)
          ___llvm_gcov_writeout in XXXXXX.a(NSString+SBJSON.o)
          ___llvm_gcov_writeout in XXXXXX.a(SBJsonBase.o)
          ___llvm_gcov_writeout in XXXXXX.a(SBJsonParser.o)
          ___llvm_gcov_writeout in XXXXXX.a(SBJsonWriter.o)
          ___llvm_gcov_writeout in XXXXXX.a(XXXXXXReachability.o)
          ___llvm_gcov_writeout in XXXXXX.a(XXXXXX.o)
          ...
      "_llvm_gcda_increment_indirect_counter", referenced from:
          -[SBJsonParser scanValue:] in XXXXXX.a(SBJsonParser.o)
          -[SBJsonParser scanRestOfString:] in XXXXXX.a(SBJsonParser.o)
          -[SBJsonWriter appendString:into:] in XXXXXX.a(SBJsonWriter.o)
          -[XXXXXX loginSuccessfulCallback:XXXXXXHttpResult:] in XXXXXX.a(XXXXXX.o)
          +[XXXXXXDataTank sharedDataTankManager] in XXXXXX.a(XXXXXXDataTank.o)
          -[XXXXXXDataTank processFiveHundredSeriesHttpResult:] in XXXXXX.a(XXXXXXDataTank.o)
          -[XXXXXXDataTank networkActive] in XXXXXX.a(XXXXXXDataTank.o)
          ...
    ld: symbol(s) not found for architecture i386
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

我已经尝试搜索不完整的符号,但谷歌字面上有0结果.

我假设静态库是用单元测试目标不是但我找不到的东西构建的.

有没有人有什么建议?

干杯

Ger*_*eri 49

这对我很有用(用粗体捕捉设置):

在此输入图像描述

  • "仪器程序流程"是我的问题!谢谢! (9认同)

cah*_*bin 13

如果您不需要代码覆盖率,则可以使用以下设置完成禁用代码覆盖,从而避免尝试调用这些功能.

GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO
GCC_GENERATE_TEST_COVERAGE_FILES = NO
Run Code Online (Sandbox Code Playgroud)


Du *_*ong 4

llvm_gcda_start_file 和 co 由 LLVM 编译器添加,用于代码覆盖率和单元测试。

将 -lprofile_rt 添加到项目设置中的链接器标志应该可以解决此错误。(较旧的教程可能建议使用 -lgcov,适用于 Xcode 3 和 GCC)

根据Xcode 4.4.1 上的代码覆盖率,不再需要“-lprofile_rt”。

  • 我遇到了同样的问题,并将 -lprofile_rt 添加到链接器标志,但这导致了此错误:“找不到 -lprofile_rt 的库” (2认同)