Ответ 1
Проблема заключалась в том, что в XCode 4 зависимости не предполагают параметры архитектуры основного проекта, как это было ранее в XCode 3. Мне пришлось пройти через все мои зависимости, устанавливая их для правильной архитектуры.
Я только что обновил до 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
Проблема заключалась в том, что в XCode 4 зависимости не предполагают параметры архитектуры основного проекта, как это было ранее в XCode 3. Мне пришлось пройти через все мои зависимости, устанавливая их для правильной архитектуры.
Вот постоянное решение. В общем случае проект перезаписи может вызвать эти пролемы. Попробуйте этот метод.
-UPDATE - ошибка Clang - ошибка компоновщика Mach-O
В некотором случае окно журнала ошибок, отображающее ошибку .xctest, чтобы исправить его
- > Выберите свой проект
- > Помимо этого (непосредственно перед вкладкой "Общие" ) выберите файл projectTest из раскрывающегося меню
- > Существует один вариант (например, ProjNameTests)
- > В главном приложении выберите свой проект из раскрывающегося списка, только если он показывает пользовательские
СДЕЛАНО!
Старый метод удален
У меня была та же проблема, и проблема заключалась в том, что я случайно импортировал файл .m вместо .h в файл реализации - надеюсь, что он поможет
Просто столкнулся с той же проблемой.
Решение (для меня) = проверьте свои фреймворки.
В моем случае я добавил классы, связанные с CoreData без "CoreData.framework". Добавление этого решения вызвало жалобу MACH_O.
открыть файл .xcworkspace не .xcodeproj. Я повторяю открытый файл .xcworkspace. Все ваши ошибки исчезнут.
Re: Проблема, указанная в заголовке:
На всякий случай кто-то пропустил очевидное...
Я столкнулся с этой ошибкой после установки новой версии Xcode4 и перетаскивания существующих файлов в новый проект. Я не заметил, что флажок "добавить к цели" не был отмечен в диалоговом окне "Выбрать параметры для добавления файлов:". Исправление моего упущения в Целях > Сформировать фазы > Скомпилировать Источники решили проблему.
Меню > Продукт > Очистить, вот что заставило его работать. Я не уверен обо всех остальных. Я добавил pic, чтобы показать.
Необычная ошибка. Для меня я просто очистил и перезапустил Xcode, и проблема исчезла.
Ни один из этих ответов не помог мне. Затем я попытался переустановить Cocoapods:
pod deintegrate
pod install
Проблема решена!
У меня было то же самое и удалось решить это.
В настройках xcode указатель местоположения изменит значение в позиции сборки на "Place build products in locations specified by targets"
.
Некоторое время я боролся с этим, и в моем случае это стало настройкой сборки в пути поиска под названием FRAMEWORK_SEARCH_PATHS. Это помогло мне выбрать кнопку "Уровни", которая, казалось, сравнивала настройки моего проекта, цели и "Разрешенные". Я видел, что мой целевой параметр каким-то образом переопределил значение по умолчанию "$ (inherited)", а переопределенное значение было тем, что XCode "разрешил" настройку. Когда я удалил переопределение, которое в этом случае указало 3.2 sdk, ошибки компоновщика ушли - как и недавно появились предупреждения о любых классах, где я вызывал методы post-4.0.
Об этих предупреждениях - я их никогда не видел, прежде чем добавить инфраструктуру MessageUI для недавнего изменения. Я подозреваю, но не знаю точно, что, добавив эту фреймворк, XCode попытался сделать что-то умное, добавив это переопределение в мою цель. Я не делал этого явно в любой момент. Предупреждения были, например, о методе URLByAppendingPathComponent для NSURL, который не отображался до sdk 4.0. Перед добавлением структуры MessageUI я никогда не получал этого предупреждения. И поскольку я удалил переопределение, я больше не получаю их.
У меня была эта проблема, и импорт QuartzCore
исправил ее.
Изменение "Только построение активных архитектур" на "Да" в "CordovaLib.xcodeproj" → "Настройки сборки" сделали трюк для меня. ранее приложение запускалось на симуляторе, но не на устройстве.
Вам может потребоваться обновить настройки сборки.
Проверьте целевую версию iOS и архитектуры процессора, поскольку у вас могут отсутствовать старые SDK с XCode 4.
Вы можете увидеть "Missing SDK" в настройках сборки. Измените это на все, что угодно.
У меня была такая же проблема: просто случайно удалил файл .m, а .h был в проекте. Проблема исчезла, когда я восстановил файл .m.
Убедитесь, что у вас нет определенного пути поиска каркаса. если вы перейдете к информации о цели и просто удалите записи пути поиска в каркасе, она должна использовать значения по умолчанию для вашей указанной версии развертывания.
Я просто пытаюсь создать файл category class
и получил эту странную проблему... и наконец....
Неверный способ создания класса категории, который вызывает проблему:
New File
→ Cocoa Touch
→ Objective-C class
, затем я изменил имя файла на Категория Class, например name.. (т.е. OriginalClass_CategoryName.h/m
до OriginalClass+CategoryName.h/m
, а также изменил содержимое в файле).
New File
→ Cocoa Touch
→ Objective-C category
, и он автоматически сгенерирует файлы (OriginalClass+CategoryName.h/m
).
О, как глупо я!
Если вы используете CoreData и используете XCode для создания подклассов NSManagedObject для ваших объектов, убедитесь, что вы генерируете только один для каждого объекта.
Моя проблема заключалась в том, что он создал несколько подклассов NSManagedObject для одного и того же объекта (и помещал их в разные папки).
Я просто удалил все из них и восстановил подклассы NSManagedObject.
Чтобы добавить в список странных вещей, которые исправили эту проблему...
У меня были некоторые константные переменные CGFloat в глобальном заголовочном файле, например,
const NSInteger globalInteger1 = 2;
const NSInteger globalInteger2 = 3;
В тот момент, когда я удалил их, все было хорошо:)
У меня была точно такая же проблема только потому, что у меня были две одинаковые константы в разных классах. У вас также может возникнуть эта проблема, если вы импортируете файл .m файла не .h файл
Не уверен, что это связано, но, увидев, что вы используете некоторые три библиотеки, вы можете проверить это сообщение на своем веб-сайте: http://three20.info/article/2011-03-10-Xcode4-Support
У меня была та же проблема, и я решил. В моем случае установка "архитектуры" вызвала проблему. В моем файле проекта, вкладке "Настройки", "Архитектуры" были установлены в armv6. Я изменил его на Standard (armv7), очистил и построил. Тогда это сработало!
В моем случае проблема заключалась в создании разных архитектур, указанных в разных целях. Я создавал свою целевую программу с помощью armv6, armv7 и cocos2d со стандартом (amrv7). Перейдите в настройки сборки и убедитесь, что ваши архитектуры согласны со всеми целями.
Я решил эту проблему слишком странно!
Перейдите в Целевая > Сборка Фазы > Свяжите двоичные файлы с библиотеками:
Удалите все свои фреймворки и добавьте их снова!
Надеюсь, это сработает для вас!
Для языка Swift...
Я получаю эту ошибку "ld: файл слишком мал (длина = 0)...."
В моем случае я просто очищаю проект, а затем перестраиваю его.
Шаги: -
1) goto Project → Clean
2) goto Project → Build
Надеюсь, что это поможет.
Это помогло мне:
Перейдите к
1) Продукты > чистые
2) Windows > Проекты
3) Выберите проект и нажмите " Удалить" полученные данные
4) Продукты > Построить
Одна возможность: Включите "Снятие мертвого кода" в настройках сборки Xcode 4.
Другая возможность: возможно, вы переключились на использование LLVM для некоторых фреймворков, которые ранее использовали GCC. Возврат к GCC (или LLVM GCC) может избавиться от этих предупреждений.
Я ошибочно определил новую константу с тем же именем, что и существующая константа в другом файле, и это вызвало эту ошибку для меня, используя xCode 4.3.1. xCode не жаловался, но компилятор ему не нравится.
Я смог исправить эту ошибку, отредактировав "Пути поиска библиотеки"
Это вызвало, в первую очередь, потому что я переместил пару папок, и это закончилось тем, что я дал моим настройкам сборки два разных пути поиска, потому что они автоматически добавляются к вашим настройкам сборки при связывании библиотеки/фреймворка, но они не всегда удаляются.
Итак, если вы перемещаете связанную библиотеку/фреймворк в другой каталог и перенаправляете его, вам придется вручную отредактировать путь поиска.
Вы можете уклониться от этого, удалив библиотеку/структуру перед ее переносом, но я не тестировал это.