Ответ 1
Это сработало для меня хорошо (поймайте настройки жирным шрифтом):
Я искал SO и Google, но пока не нашел ничего полезного.
Мы обновляем существующий проект iOS для создания против iOS 5.
Наш проект имеет две цели: первая - наша статическая библиотека, а вторая - приложение Unit Test (GHUnit).
При создании цели Unit Test она успешно компилирует статическую библиотеку, но затем не связывается с ней со следующим выходом:
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 результатов.
Я предполагаю, что статическая библиотека строится с чем-то, что не соответствует цели Unit Test, но я не могу ее найти.
Есть ли у кого-нибудь предложения?
Приветствия
Это сработало для меня хорошо (поймайте настройки жирным шрифтом):
Если вам не требуется покрытие кода, вы можете завершить его отключением, используя следующие настройки, избегая при этом попыток вызова этих функций.
GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO
GCC_GENERATE_TEST_COVERAGE_FILES = NO
llvm_gcda_start_file и co добавляются компилятором LLVM для покрытия кода и модульного тестирования.
добавление -lprofile_rt к флагам Linker в ваших настройках проекта должно решить эту ошибку. (более старый учебник может предложить -lgcov, который предназначен для Xcode 3 и GCC)
В соответствии с Кодовое покрытие на Xcode 4.4.1 "-lprofile_rt" больше не требуется.
В моем случае я строил устройство. Переход на симулятор работал как шарм, но я не знаю, почему это другое.: -)
В моем случае мне пришлось добавить --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/
У меня была такая же ошибка: просто добавьте в ваши файлы "libGoogleAnalyticsServices.a"