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

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

    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

Ответы [ 67 ]

13 голосов
/ 29 июня 2011

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

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

13 голосов
/ 22 марта 2011

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

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

11 голосов
/ 27 июня 2011

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

8 голосов
/ 05 октября 2012

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

7 голосов
/ 12 мая 2011

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

7 голосов
/ 16 марта 2011

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

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

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

6 голосов
/ 22 апреля 2011

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

5 голосов
/ 02 июля 2015

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

5 голосов
/ 16 февраля 2012

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

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

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

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

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

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

5 голосов
/ 15 марта 2012

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

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

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

В тот момент, когда я удалилс этим все было нормально :) 1006 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...