ошибка компоновщика Утверждение не выполнено: (atom-> fixupCount () == 1)

Используя Xcode 4.0.2 , у меня есть цель, которая компилирует, связывает и работает правильно в симуляторе. Однако, когда я компилирую и связываю его для устройства iOS, я получаю следующую (полную) ошибку компоновщика:

Ld /Users/mike/Library/Developer/Xcode/DerivedData/FOObar-ezjrxybxyybadxguvscgaqtaelju/Build/Products/Debug-iphoneos/FrameworkHarness.app/FrameworkHarness normal armv7 cd /Users/mike/src/FOO/FOObar setenv IPHONEOS_DEPLOYMENT_TARGET 4.2 setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-gcc-4.2 -arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk -L/Users/mike/Library/Developer/Xcode/DerivedData/FOObar-ezjrxybxyybadxguvscgaqtaelju/Build/Products/Debug-iphoneos -F/Users/mike/Library/Developer/Xcode/DerivedData/FOObar-ezjrxybxyybadxguvscgaqtaelju/Build/Products/Debug-iphoneos -filelist /Users/mike/Library/Developer/Xcode/DerivedData/FOObar-ezjrxybxyybadxguvscgaqtaelju/Build/Intermediates/FOObar.build/Debug-iphoneos/FrameworkHarness.build/Objects-normal/armv7/FrameworkHarness.LinkFileList -dead_strip -miphoneos-version-min=4.2 -framework FOObar -framework UIKit -framework Foundation -framework CoreGraphics -o /Users/mike/Library/Developer/Xcode/DerivedData/FOObar-ezjrxybxyybadxguvscgaqtaelju/Build/Products/Debug-iphoneos/FrameworkHarness.app/FrameworkHarness Assertion failed: (atom->fixupCount() == 1), function targetCString, file /SourceCache/ld64/ld64-123.3/src/ld/parsers/macho_relocatable_file.cpp, line 4831. 0 0x13886 __assert_rtn + 86 1 0x2dfd8 mach_o::relocatable::PointerToCStringSection<arm>::targetCString(mach_o::relocatable::Atom<arm> const*, ld::IndirectBindingTable const&) const + 280 2 0x2b27c mach_o::relocatable::PointerToCStringSection<arm>::contentHash(mach_o::relocatable::Atom<arm> const*, ld::IndirectBindingTable const&) const + 76 3 0x2c57f mach_o::relocatable::Atom<arm>::contentHash(ld::IndirectBindingTable const&) const + 47 4 0xae870 ld::tool::SymbolTable::findSlotForReferences(ld::Atom const*, ld::Atom const**) + 704 5 0xb21dc ld::tool::Resolver::convertReferencesToIndirect(ld::Atom const&) + 268 6 0xb33f2 ld::tool::Resolver::doAtom(ld::Atom const&) + 642 7 0x21f7c mach_o::relocatable::File<arm>::forEachAtom(ld::File::AtomHandler&) const + 60 8 0xaa29e ld::tool::InputFiles::forEachInitialAtom(ld::File::AtomHandler&) const + 46 9 0xb5924 ld::tool::Resolver::resolve() + 84 10 0x14ff7 main + 871 collect2: ld returned 1 exit status 

Может кто-то пролить свет на это?

Спасибо Майку

Вызов с -v

 /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-gcc-4.2 -v -arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk -L/Users/mike/Library/Developer/Xcode/DerivedData/FOObar-ezjrxybxyybadxguvscgaqtaelju/Build/Products/Debug-iphoneos -F/Users/mike/Library/Developer/Xcode/DerivedData/FOObar-ezjrxybxyybadxguvscgaqtaelju/Build/Products/Debug-iphoneos -filelist /Users/mike/Library/Developer/Xcode/DerivedData/FOObar-ezjrxybxyybadxguvscgaqtaelju/Build/Intermediates/FOObar.build/Debug-iphoneos/FrameworkHarness.build/Objects-normal/armv7/FrameworkHarness.LinkFileList -dead_strip -miphoneos-version-min=4.2 -framework FOObar -framework UIKit -framework Foundation -framework CoreGraphics -o /Users/mike/Library/Developer/Xcode/DerivedData/FOObar-ezjrxybxyybadxguvscgaqtaelju/Build/Products/Debug-iphoneos/FrameworkHarness.app/FrameworkHarness Using built-in specs. Target: arm-apple-darwin10 Configured with: /var/tmp/llvmgcc42_Embedded/llvmgcc42_Embedded-2373.6~5/src/configure --enable-checking --enable-werror --prefix=/Developer/usr/llvm-gcc-4.2 --mandir=/Developer/usr/llvm-gcc-4.2/share/man --enable-languages=c,objc,c++,obj-c++ --program-prefix=llvm- --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin10 --enable-llvm=/var/tmp/llvmgcc42_Embedded/llvmgcc42_Embedded-2373.6~5/dst-llvmCore/Developer/usr/local --enable-werror-always --program-prefix=arm-apple-darwin10- --host=i686-apple-darwin10 --target=arm-apple-darwin10 --with-gxx-include-dir=/usr/include/c++/4.2.1 --with-build-sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.Internal.sdk Thread model: posix gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2373.6) /Developer/Platforms/iPhoneOS.platform/Developer/usr/llvm-gcc-4.2/bin/../libexec/gcc/arm-apple-darwin10/4.2.1/collect2 -dynamic -arch armv7 -dead_strip -iphoneos_version_min 4.2 -syslibroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk -weak_reference_mismatches non-weak -o /Users/mike/Library/Developer/Xcode/DerivedData/FOObar-ezjrxybxyybadxguvscgaqtaelju/Build/Products/Debug-iphoneos/FrameworkHarness.app/FrameworkHarness -lcrt1.3.1.o -L/Users/mike/Library/Developer/Xcode/DerivedData/FOObar-ezjrxybxyybadxguvscgaqtaelju/Build/Products/Debug-iphoneos -L/Developer/Platforms/iPhoneOS.platform/Developer/usr/llvm-gcc-4.2/bin/../lib/gcc/arm-apple-darwin10/4.2.1/v7 -L/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib -L/Developer/Platforms/iPhoneOS.platform/Developer/usr/llvm-gcc-4.2/bin/../lib/gcc/arm-apple-darwin10/4.2.1 -L/Developer/Platforms/iPhoneOS.platform/Developer/usr/llvm-gcc-4.2/bin/../lib/gcc -L/Developer/Platforms/iPhoneOS.platform/Developer/usr/llvm-gcc-4.2/bin/../lib/gcc/arm-apple-darwin10/4.2.1/../../.. -filelist /Users/mike/Library/Developer/Xcode/DerivedData/FOObar-ezjrxybxyybadxguvscgaqtaelju/Build/Intermediates/FOObar.build/Debug-iphoneos/FrameworkHarness.build/Objects-normal/armv7/FrameworkHarness.LinkFileList -framework FOObar -framework UIKit -framework Foundation -framework CoreGraphics -lgcc_s.1 -lgcc -lSystem -F/Users/mike/Library/Developer/Xcode/DerivedData/FOObar-ezjrxybxyybadxguvscgaqtaelju/Build/Products/Debug-iphoneos Assertion failed: (atom->fixupCount() == 1), function targetCString, file /SourceCache/ld64/ld64-123.3/src/ld/parsers/macho_relocatable_file.cpp, line 4831. 0 0x13886 __assert_rtn + 86 1 0x2dfd8 mach_o::relocatable::PointerToCStringSection<arm>::targetCString(mach_o::relocatable::Atom<arm> const*, ld::IndirectBindingTable const&) const + 280 2 0x2b27c mach_o::relocatable::PointerToCStringSection<arm>::contentHash(mach_o::relocatable::Atom<arm> const*, ld::IndirectBindingTable const&) const + 76 3 0x2c57f mach_o::relocatable::Atom<arm>::contentHash(ld::IndirectBindingTable const&) const + 47 4 0xae870 ld::tool::SymbolTable::findSlotForReferences(ld::Atom const*, ld::Atom const**) + 704 5 0xb21dc ld::tool::Resolver::convertReferencesToIndirect(ld::Atom const&) + 268 6 0xb33f2 ld::tool::Resolver::doAtom(ld::Atom const&) + 642 7 0x21f7c mach_o::relocatable::File<arm>::forEachAtom(ld::File::AtomHandler&) const + 60 8 0xaa29e ld::tool::InputFiles::forEachInitialAtom(ld::File::AtomHandler&) const + 46 9 0xb5924 ld::tool::Resolver::resolve() + 84 10 0x14ff7 main + 871 collect2: ld returned 1 exit status 

дополнительные детали

Это произошло, когда я связывал скомпилированные файлы .m для приложения под названием FrameworkHarness с фреймворком, который я создал под именем FOOBar. Рецепт каркаса пришел из: http://db-in.com/blog/2011/07/universal-framework-iphone-ios-2-0/

Ошибка связи при I:

  • Скомпилируйте файлы .m из фреймворков FOObar непосредственно с файлами .m-файлов FrameworkHarness для симулятора.
  • Компилируйте файлы .m из фреймворков FOObar непосредственно с файлами .m-файлов FrameworkHarness для устройства iOS.
  • Свяжите структуру FOObar с скомпилированными файлами .m-файлов FrameworkHarness для симулятора.

При I:

  • Свяжите структуру FOObar с скомпилированными файлами .m-файлов FrameworkHarness для устройства iOS.

Я устал изолировать проблему с рамками, удалив одну из 5 областей, которые составляют основу. Каждый раз, когда я связывал измененную структуру с скомпилированными файлами .m-файлов FrameworkHarness для iOS-устройства, ошибок ссылок не было.

Затем я оставил структуру без изменений, но удалил вызовы в одну из 5 областей в структуре из приложения. Я смог изолировать область фреймворка, которая вызовет проблему с компоновщиком для устройства iOS. Я сделал тот же процесс, удалив код в фреймворке и смог определить конкретный код, который, когда ссылка против вызвала ошибку. Я переместил код в этой области рамки, и ошибка ссылки исчезла. Однако код, который я переместил, был поверхностным, и все, что я сделал, это перевести код из одной функции в новую функцию и вызвать эту функцию из исходной функции. Перемещенный код:

 // Prompt are you sure? NSString *message = [[NSString alloc] initWithFormat:@"Are you sure you want to remove the vlaue \"%@\" from the list?", [array objectAtIndex:[pickerView selectedRowInComponent:0]]]; UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Confirmation needed" message:message delegate:self cancelButtonTitle:@"Keep" otherButtonTitles:@"Remove", nil]; [message release]; [alertView show]; [alertView release]; 

Использование nm для сравнения символов framworks

Я запустил nm на устройстве iOS и смоделировал фреймворки. Была некоторая разница между версиями, но ничто не закричало

nm -j -a

-j Просто отобразить имена символов (нет значения или типа). -a Отобразить все записи в таблице символов, включая те, которые были вставлены для использования отладчиками.

 diff nm.ios nm.sim 125a126,134 > EH_Frame1 > EH_Frame1 > EH_Frame1 > EH_Frame1 > EH_Frame1 > EH_Frame1 > EH_Frame1 > EH_Frame1 > EH_Frame1 313d321 < ___divsi3 324a333 > _objc_msgSend_fpret 327a337,431 > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh > func.eh 
  • EH_Frame1 и func.eh являются «S» (символ в разделе, отличном от указанного выше)
  • ___divsi3 и _objc_msgSend_fpret – «U» (неопределенные)

nm -j -g

-j Просто отобразить имена символов (нет значения или типа). -g Отображать только глобальные (внешние) символы.

 diff nm.ios nm.sim 83d82 < ___divsi3 89a89 > _objc_msgSend_fpret 

nm -j -u

-j Просто отобразить имена символов (нет значения или типа). -u Отображать только неопределенные символы.

 diff nm.ios nm.sim 37d36 < ___divsi3 43a43 > _objc_msgSend_fpret 

Возможные следующие шаги

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

Обновите до последней версии Xcode (в настоящее время 4.1, не включая бета). Это должно решить вашу проблему.

Это ошибка компоновщика или компилятора. Вы захотите подать радар с информацией о вашем источнике и сборке. По крайней мере нам понадобятся все объектные файлы и линия ссылок.

  • Не удалось запустить приложение ig для мобильных телефонов
  • iPhone. Не удается запустить приложения с XCode на устройстве iOS 5.0.1, так как обновление iOS от 5.0
  • Измените порядок листинга контроллеров представления в раскадровке Xcode
  • Действительный профиль подготовки для этого исполняемого файла не был обнаружен при использовании инструментов
  • Версия iOS на «KashodhaniPhone» не соответствует ни одной из версий iOS, поддерживаемых для разработки с этой установкой iOS SDK.
  • Устройство Retina iOS не отображает изображение @ 2X, оно показывает изображение 1X
  • Получить все изображения из фотобиблиотеки в iphone
  • Существуют ли стандартные методы для организации файлов в рамках проекта iOS xCode?
  • Создание облегченной версии в Xcode 4
  • Добавить ассоциации файлов для IOS в Xcode4
  • не удалось получить доступ к файлам .nib (XIB) из фреймворка в iOS
  • Interesting Posts

    Nil не совместим с ожидаемым типом аргумента UIViewAnimationOptions

    API-интерфейс сканера штрих-кода iOS7 добавляет формат штрих-кода от нуля до UPCA

    Swift3: невозможно удалить строки в секции

    Текущее местоположение не работает в Google Map

    Как преобразовать изображение в формат PVRTC

    Почему в iOS 11 мое UIApplicationState отображается как неактивное состояние вместо активного?

    размер изображений не изменяется на разных экранах Xcode

    семафор: не видно, что вызваны мои методы обратного вызова, тупик

    AFNetworking 2.0 отменяет определенную задачу

    где реализовать основные данные?

    Почему у моего AVURLASset нет длительности?

    NSMutableData appendBytes устанавливает длину -1 и сбой

    Где я могу найти «документальные доказательства» для одобрения App Store для загрузки публичных видео в Facebook?

    Сортировка основного объекта данных по отношениям

    Полноэкранное видео YouTube, поворот и строка состояния (iOS)

    Давайте будем гением компьютера.