Ошибка 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

Ответ 1

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

Ответ 2

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

-UPDATE - ошибка Clang - ошибка компоновщика Mach-O

В некотором случае окно журнала ошибок, отображающее ошибку .xctest, чтобы исправить его

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

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

- > Существует один вариант (например, ProjNameTests)

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

СДЕЛАНО!

enter image description here

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

Ответ 3

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

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

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

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

Я столкнулся с этой ошибкой после установки новой версии Xcode4 и перетаскивания существующих файлов в новый проект. Я не заметил, что флажок "добавить к цели" не был отмечен в диалоговом окне "Выбрать параметры для добавления файлов:". Исправление моего упущения в Целях > Сформировать фазы > Скомпилировать Источники решили проблему.

Ответ 7

Меню > Продукт > Очистить, вот что заставило его работать. Я не уверен обо всех остальных. Я добавил pic, чтобы показать.

enter image description here

Ответ 8

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

Ответ 9

Fix: Build Settings > Enable Bitcode > No введите описание изображения здесь

Ответ 10

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

pod deintegrate

pod install

Проблема решена!

Ответ 11

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

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

Ответ 12

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

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

Ответ 13

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

Ответ 14

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

Ответ 15

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

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

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

Ответ 16

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

Ответ 17

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

Ответ 18

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

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

New FileCocoa TouchObjective-C class, затем я изменил имя файла на Категория Class, например name.. (т.е. OriginalClass_CategoryName.h/m до OriginalClass+CategoryName.h/m, а также изменил содержимое в файле).

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

New FileCocoa TouchObjective-C category, и он автоматически сгенерирует файлы (OriginalClass+CategoryName.h/m).

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

Ответ 19

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

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

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

Ответ 20

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

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

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

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

Ответ 21

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

Ответ 22

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

Ответ 23

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

Ответ 24

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

Ответ 25

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

Перейдите в Целевая > Сборка Фазы > Свяжите двоичные файлы с библиотеками:

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

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

Ответ 26

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

Я получаю эту ошибку "ld: файл слишком мал (длина = 0)...."

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

Шаги: -

1) goto Project → Clean

2) goto Project → Build

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

Ответ 27

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

Перейдите к

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

2) Windows > Проекты

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

4) Продукты > Построить

Ответ 28

Одна возможность: Включите "Снятие мертвого кода" в настройках сборки Xcode 4.

Другая возможность: возможно, вы переключились на использование LLVM для некоторых фреймворков, которые ранее использовали GCC. Возврат к GCC (или LLVM GCC) может избавиться от этих предупреждений.

Ответ 29

Я ошибочно определил новую константу с тем же именем, что и существующая константа в другом файле, и это вызвало эту ошибку для меня, используя xCode 4.3.1. xCode не жаловался, но компилятор ему не нравится.

Ответ 30

Я смог исправить эту ошибку, отредактировав "Пути поиска библиотеки"

Это вызвало, в первую очередь, потому что я переместил пару папок, и это закончилось тем, что я дал моим настройкам сборки два разных пути поиска, потому что они автоматически добавляются к вашим настройкам сборки при связывании библиотеки/фреймворка, но они не всегда удаляются.

Итак, если вы перемещаете связанную библиотеку/фреймворк в другой каталог и перенаправляете его, вам придется вручную отредактировать путь поиска.

Вы можете уклониться от этого, удалив библиотеку/структуру перед ее переносом, но я не тестировал это.