Ошибка Apple Mach-O Linker при компиляции для устройства

Я только что обновился до xcode 4.0 и больше не могу развертываться на iPhone, я получаю ошибку Apple Mach-O Linker, хотя она все еще работает для симулятора.

    Ld /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Intermediates/iParcel.build/Debug-iphoneos/iParcel.build/Objects-normal/armv7/iParcel normal armv7
    cd /Users/yveswheeler/iParcel
    setenv IPHONEOS_DEPLOYMENT_TARGET 3.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/g++-4.2 -arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk -L/Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos -F/Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos -filelist /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Intermediates/iParcel.build/Debug-iphoneos/iParcel.build/Objects-normal/armv7/iParcel.LinkFileList -dead_strip -all_load -ObjC -lxml2 -miphoneos-version-min=3.2 -framework UIKit -framework CoreGraphics -framework QuartzCore /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20.a /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20Core.a /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20Network.a /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20Style.a /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20UI.a /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20UICommon.a /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20UINavigator.a -framework AddressBook -lz.1.2.3 -framework Foundation -framework CFNetwork -framework MobileCoreServices -framework SystemConfiguration -framework MessageUI -framework AudioToolbox -o /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Intermediates/iParcel.build/Debug-iphoneos/iParcel.build/Objects-normal/armv7/iParcel

arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20.a: No such file or directory
arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20Core.a: No such file or directory
arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20Network.a: No such file or directory
arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20Style.a: No such file or directory
arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20UI.a: No such file or directory
arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20UICommon.a: No such file or directory
arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20UINavigator.a: No such file or directory
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++-4.2 failed with exit code 1

69 ответов

Решение

Проблема заключалась в том, что в XCode 4 зависимости не принимают настройки архитектуры основного проекта, как это было ранее в XCode 3. Мне пришлось пройти через все мои зависимости, устанавливая их для правильной архитектуры.

Вот постоянное решение. В общем случае перезапись проекта может стать причиной этой проблемы. Попробуйте этот метод.

-UPDATE - Ошибка лягушки - Ошибка компоновщика Mach-O

В некоторых случаях в окне журнала ошибок отображается ошибка.xctest, чтобы ее исправить.

-> Выберите свой проект

-> Рядом с этим (непосредственно перед вкладкой General) выберите свой файл projectTest из выпадающего списка

-> Есть один вариант (например, ProjNameTests)

-> В Host Application выберите свой проект из выпадающего списка, только если он показывает пользовательский

СДЕЛАННЫЙ!

Старый метод удален

У меня была та же проблема, и проблема была в том, что я случайно импортировал.m файл вместо.h в файле реализации - надеюсь, это поможет

Просто столкнулся с той же проблемой.

Решение (для меня) = проверить свои рамки.

В моем случае я добавил классы, связанные с CoreData без "CoreData.framework". Добавление его решило жалобу MACH_O.

Открыть.xcworkspace файл не.xcodeproj. Я повторяю открытый файл.xcworkspace. Все ваши ошибки исчезнут.

Re: проблема, как указано в заголовке:

На всякий случай, если кто-то пропустил очевидное...

Я столкнулся с этой ошибкой после установки новой версии Xcode4 и перетаскивания существующих файлов в новый проект. Мне не удалось обнаружить, что флажок "Добавить к целям" не был отмечен в диалоговом окне "Выбор параметров для добавления файлов:". Исправление моего пропуска в Targets>Build Phases>Compile Sources решило проблему.

Menu > Product > Clean - вот что заставило его работать. Я не уверен во всех остальных. Я добавил фото, чтобы показать.

Странная ошибка. Для меня, я просто очистил и перезапустил Xcode, и проблема ушла.

Исправлено: Настройки сборки> Включить биткод> Нет

Ни один из этих ответов не помог мне. Затем я попытался переустановить Cocoapods:

pod deintegrate

pod install

Задача решена!

Некоторое время я боролся с этим, и в моем случае это был параметр "Сборка" в разделе "Пути поиска" под названием FRAMEWORK_SEARCH_PATHS. Помогло то, что я выбрал кнопку "Уровни", которая, казалось, сравнивала мой проект, цель и настройки "Разрешено". Я увидел, что мои настройки цели каким-то образом переопределили значение по умолчанию "$(унаследованное)", и переопределенное значение было тем, что XCode "разрешил" для настройки. Когда я удалил переопределение, которое в данном случае указало 3.2 sdk, ошибки компоновщика исчезли - так же, как и некоторые недавно появившиеся предупреждения о любых классах, где я вызывал методы после 4.0.

Об этих предупреждениях - я их никогда не видел, пока не добавил структуру MessageUI для недавних изменений. Я подозреваю, но не знаю наверняка, что когда я добавил эту платформу, XCode попытался сделать что-то умное, добавив это переопределение к моей цели. Я не делал это явно в любой момент. Предупреждения были, например, о методе URLByAppendingPathComponent NSURL, который не появлялся до SDK 4.0. До добавления платформы MessageUI я никогда не получал это предупреждение. И так как я удалил переопределение, я больше не получаю их.

У меня было то же самое и удалось решить.

В настройках xcode вкладка местоположения меняет значение под местоположением сборки на " Place build products in locations specified by targets",

У меня была эта проблема и импорт QuartzCore починил это.

Изменение "Только для активных архитектур" на "Да" в CordovaLib.xcodeproj -> "Настройки сборки" помогло мне. ранее приложение работало на симуляторе, но не на устройстве.

У меня была такая же проблема: просто случайно удалил файл.m, пока он был в проекте. Проблема исчезла, когда я восстановил файл.m.

Возможно, вам придется обновить настройки сборки.

Проверьте целевую версию iOS и архитектуру процессора, поскольку у вас может не быть старых SDK с XCode 4.

Вы можете увидеть "Missing SDK" в настройках сборки. Измените это на то, что применимо.

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

Я просто пытаюсь создать category class файл и получил эту странную проблему.. и, наконец,....

Неправильный способ создать класс категории, который вызывает проблему:

New File -> Cocoa Touch -> Objective-C classЗатем я изменил имя файла на категорию класса, как имя.. (т.е. OriginalClass_CategoryName.h/m в OriginalClass+CategoryName.h/m, а также изменил содержимое файла).

Правильный путь здесь:

New File -> Cocoa Touch -> Objective-C category, и он будет автоматически генерировать файлы (OriginalClass+CategoryName.h/m).

О, как я глупа!

Чтобы добавить в список странных вещей, которые исправили эту проблему...

У меня были некоторые константные переменные CGFloat в глобальном заголовочном файле, например,

const NSInteger  globalInteger1 = 2;
const NSInteger  globalInteger2 = 3;

В тот момент, когда я удалил их, все было хорошо:)

Если вы используете CoreData и используете XCode для генерации подклассов NSManagedObject для ваших сущностей, убедитесь, что вы генерируете только один для каждой сущности.

Моя проблема заключалась в том, что он генерировал несколько подклассов NSManagedObject для одной и той же сущности (и помещал их в разные папки).

Я просто удалил их все и восстановил подклассы NSManagedObject.

У меня была точно такая же проблема только потому, что у меня были две одинаковые константы в разных классах. Вы также можете иметь эту проблему, если вы импортируете.m файл, а не.h файл

Не уверен, что это связано, но, видя, что вы используете три20 библиотек, вы можете проверить этот пост на их сайте: http://three20.info/article/2011-03-10-Xcode4-Support

В моем случае проблема заключалась в том, что разные архитектуры указывались под разными целями. Я строил свою цель приложения с armv6, armv7 и cocos2d с помощью Standard (amrv7). Зайдите в настройки сборки и убедитесь, что ваша архитектура соответствует всем целям.

У меня была такая же проблема, и я ее решил. В моем случае проблема была связана с настройкой "архитектуры". В моем файле проекта на вкладке "Настройки сборки" для архитектуры было установлено значение armv6. Я поменял его на Standard(armv7), делаю чистку и сборку. Тогда это сработало!

Для языка Swift...

Я получаю эту ошибку " ld: file too small (length=0) .... "

В моем случае я просто очищаю проект, а затем перестраиваю его..

Шаги: -

1) Перейти к проекту -> Чистый

2) Перейти к проекту -> Построить

Надеюсь это поможет..

Я решил эту проблему слишком странно!

Перейдите в Target > Build Phases > Link Binary с библиотеками:

Удалите все ваши рамки и добавьте их снова!

Надеюсь, это работает для вас!

Это помогло мне:

Идти к

1) Продукты> чистые

2) Windows > Проекты

3) Выберите ваш проект и нажмите "Удалить" производные данные

4) Продукты> Сборка

Для меня проблема была в том, что я загружал одни и те же функции дважды. Удалить -ObjC из Настройки сборки > Связывание > Другие флаги компоновщика.

Код подписи!!!

У меня тоже была эта проблема - "команда компоновщика завершилась с кодом выхода 1 (используйте -v, чтобы увидеть вызов)"

Моя проблема заключалась в том, что я пытался запустить приложение на реальном устройстве, и я забыл настроить раздел " Подписывание кода " на вкладке " Настройки сборки ".

Для меня это был случайный импорт файла реализации ".m" вместо соответствующего файла заголовка ".h". Как только я понял, что сборка проекта вернулась в нормальное русло.

Другие вопросы по тегам