Ошибка 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"
,
Изменение "Только для активных архитектур" на "Да" в 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". Как только я понял, что сборка проекта вернулась в нормальное русло.