ошибка компоновщика Утверждение не выполнено: (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, не включая бета). Это должно решить вашу проблему.

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

  • предупреждение: повторное определение протокола «...» игнорируется
  • Существуют ли стандартные методы для организации файлов в рамках проекта iOS xCode?
  • NSLog нет вывода в LLDB. Работает в GDB
  • Xcode 4 говорит, что «законченный запуск <моего приложения>» на целевом устройстве - ничего не происходит
  • Задайте начальную точку горизонтального UIScrollView
  • Xcode intellisense означает буквы в цветных прямоугольниках, таких как f, T, C, M, P, C, K, # и т. Д.
  • Не удается удалить файлы из mainBundle
  • «Объединить работу с высоким разрешением» в XCode 4?
  • Могу ли я удалить дубликаты 6.0 iOS DeviceSupport?
  • Как создать панель навигации с кнопкой «Назад» на ней?
  • Xcode 4 - One Click Build для нескольких устройств?
  • Interesting Posts

    iOS: отображение вида выноски на движущемся контакте

    Лучший способ реализовать мягкое удаление или архивирование с помощью Core Data и синхронизации с сервером

    Зачем использовать registerDefaults: вместо setValue: forKey :?

    Как выпустить CGImageRef, если требуется, чтобы вернуть его?

    Container Views исчезает при изменении размера другого контейнера в раскадровке

    Динамическая метка в Swift, не прокрутка

    Клавиатура iOS активна, но невидима при прослушивании UISearchBar

    Специальный суффикс ресурса iPad не работает с раскадрой

    Отправка в Apple: XCode «submit» или Application Loader?

    Максимальная высота UITextView

    Прозрачный UITableViewCell для сгруппированного UITableView?

    NSJsonSerialzation не анализирует результаты Facebook – Ошибка какао 3840

    Выполнение асинхронного вызова до перехода к следующему контроллеру представления (Swift)

    Загрузите изображение RGBA из двух jpeg на iOS – OpenGL ES 2.0

    Можно ли генерировать / рисовать текстуру с помощью SpriteKit?

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