ошибка компоновщика Утверждение не выполнено: (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 

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

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

2 Solutions collect form web for “ошибка компоновщика Утверждение не выполнено: (atom-> fixupCount () == 1)”

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

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

  • Связывание статической библиотеки с проектом iOS в XCode 4
  • Удерживать показывается MaxInt
  • Может ли кто-нибудь сказать мне, что означают эти вопросительные знаки в окне моего навигатора? (Xcode 4.2)
  • Какой самый быстрый способ перепроверить перенос данных ядра iPhone в новую версию?
  • Преобразование приложения iPhone в универсальное приложение в Xcode 4
  • Почему я не могу добавить файл plist дочернего окна в файл настроек Project.bundle?
  • NSOrderedSet не будет встроен в класс iPhone, созданный XCode
  • Можно ли установить navigationitem.title из NIB вида?
  • Как можно безопасно удалить в каталоге ~ / Library / Developer / Xcode / DerivedData?
  • Добавить zxing в XCode 4
  • Как предотвратить переход Xcode 4 в файл main.m после каждого запуска?
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.