Неопределенные символы для архитектуры i386 Обновление проекта до iOS 5 - PullRequest
19 голосов
/ 31 октября 2011

Я изучал SO и Google, но пока не нашел ничего полезного.

Мы обновляем наш существующий проект iOS для сборки под iOS 5.

В нашем проекте есть дваtarget, первая - это наша статическая библиотека, а вторая - приложение модульного теста (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)

Я пытался найти не найденные символы, но Google буквально дал 0 результатов.

Я предполагаю, что статическая библиотека создается с чем-то, что не является целью модульного тестано я не могу его найти.

У кого-нибудь есть предложения?

Приветствия

Ответы [ 6 ]

49 голосов
/ 18 сентября 2013

Это сработало у меня хорошо (лови настройки жирным шрифтом):

enter image description here

13 голосов
/ 03 января 2012

Если вам не нужно покрытие кода, вы можете полностью отключить его, используя следующие настройки, что позволит избежать попыток вызова этих функций.

4 голосов
/ 08 ноября 2011

llvm_gcda_start_file и co добавлены компилятором LLVM для покрытия кода и модульного тестирования.

добавление -lprofile_rt к флагам линкера в настройках вашего проекта должно устранить эту ошибку. (старое руководство может предложить -lgcov для Xcode 3 и GCC)

Согласно Покрытие кода в Xcode 4.4.1"-lprofile_rt" больше не требуется.

1 голос
/ 16 февраля 2012

В моем случае я строил для устройства. Переход на симулятор работал как шарм, но я понятия не имею, почему он отличается. : -)

0 голосов
/ 09 мая 2019

В моем случае мне пришлось добавить --coverage к CMAKE_EXE_LINKER_FLAGS на Apple Clang Apple LLVM version 9.0.0 (clang-900.0.39.2). Это, кажется, исправило это. Ни одно из вышеуказанных решений не сработало.

В статье ниже упоминается:

https://asmaloney.com/2017/01/code/code-coverage-of-unit-tests-using-qt-5-on-macos/

0 голосов
/ 12 декабря 2013

У меня была та же ошибка: просто добавьте "libGoogleAnalyticsServices.a" в ваши файлы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...