Ich habe gerade ein Upgrade auf xcode 4.0 durchgeführt und kann es nicht mehr auf dem iPhone bereitstellen. Ich erhalte einen Apple Mach-O Linker-Fehler, der jedoch für den Simulator weiterhin funktioniert.
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
objective-c
iphone
xcode
xcode4
CodeVomit
quelle
quelle
Antworten:
Hier ist eine dauerhafte Lösung. Das generelle Überschreiben eines Projekts kann zu diesen Problemen führen. Versuchen Sie diese Methode.
-UPDATE - Clang-Fehler - Mach-O-Linker-Fehler
In einigen Fällen wird ein Fehlerprotokollfenster angezeigt, in dem der Fehler .xctest angezeigt wird, um ihn zu beheben
-> Wählen Sie Ihr Projekt aus
-> Wählen Sie daneben (kurz vor der Registerkarte Allgemein) Ihre projectTest-Datei aus der Dropdown-Liste aus
-> Es gibt eine Option (wie ProjNameTests)
-> Wählen Sie in der Host-Anwendung Ihr Projekt nur dann aus der Dropdown-Liste aus, wenn es benutzerdefiniert angezeigt wird
GETAN!
Alte Methode gelöscht
quelle
Ich hatte das gleiche Problem und das Problem war, dass ich versehentlich eine .m-Datei anstelle von .h in eine Implementierungsdatei importiert habe - hoffe, es hilft
quelle
Bin gerade auf das gleiche Problem gestoßen.
Die Lösung (für mich) = Überprüfen Sie Ihre Frameworks.
In meinem Fall hatte ich Klassen im Zusammenhang mit CoreData ohne "CoreData.framework" hinzugefügt. Das Hinzufügen löste die MACH_O-Beschwerde.
quelle
libPods.a
für mich zwei Dateien verknüpft (daher die doppelten Symbole). Danke, Dante!Öffnen Sie die .xcworkspace-Datei, nicht .xcodeproj. Ich wiederhole die geöffnete .xcworkspace-Datei. Alle Ihre Fehler werden verschwinden.
quelle
Betreff: Problem wie im Titel beschrieben:
Nur für den Fall, dass jemand anderes das Offensichtliche verpasst hat ...
Ich bin auf diesen Fehler gestoßen, nachdem ich eine neue Version von Xcode4 installiert und vorhandene Dateien in ein neues Projekt gezogen habe. Ich konnte nicht erkennen, dass das Kontrollkästchen "Zu Zielen hinzufügen" im Dialogfeld "Optionen zum Hinzufügen von Dateien auswählen:" deaktiviert war. Das Problem wurde behoben, indem ich meine Auslassung unter Ziele> Phasen erstellen> Quellen kompilieren korrigierte.
quelle
Menü> Produkt> Reinigen, das hat es funktioniert. Bei allen anderen bin ich mir nicht sicher. Ich habe ein Bild hinzugefügt, um es zu zeigen.
quelle
Bizarrer Fehler. Für mich habe ich gerade Xcode gereinigt und neu gestartet und das Problem ist verschwunden.
quelle
Fix: Build-Einstellungen> Bitcode aktivieren> Nein
quelle
Keine dieser Antworten hat mir geholfen. Dann habe ich versucht, Cocoapods neu zu installieren:
Problem gelöst!
quelle
Das Problem war, dass in XCode 4 die Abhängigkeiten nicht die Architektureinstellungen des Hauptprojekts übernehmen, wie dies zuvor in XCode 3 der Fall war. Ich musste alle meine Abhängigkeiten durchgehen, um sie für die richtige Architektur festzulegen.
quelle
Ich hatte das gleiche und schaffte es, es zu lösen.
In Xcode Vorlieben, Standort Registerkarte Änderungswert unter Build - Standort zu "
Place build products in locations specified by targets"
.quelle
Ich hatte eine Weile damit zu kämpfen, und in meinem Fall war es die Build-Einstellung unter Suchpfaden mit dem Namen FRAMEWORK_SEARCH_PATHS. Es half, dass ich die Schaltfläche "Ebenen" auswählte, die meine Einstellungen für Projekt, Ziel und "Gelöst" zu vergleichen schien. Ich habe gesehen, dass meine Zieleinstellung den Standardwert von "$ (geerbt)" irgendwie überschrieben hat, und der überschriebene Wert war, wie XCode die Einstellung "aufgelöst" hat. Als ich die Überschreibung entfernte, die in diesem Fall das 3.2-SDK spezifizierte, verschwanden die Linker-Fehler - ebenso wie einige kürzlich erschienene Warnungen vor Klassen, in denen ich Post-4.0-Methoden aufgerufen habe.
Zu diesen Warnungen - Ich habe sie noch nie gesehen, bevor ich das MessageUI-Framework für eine kürzlich vorgenommene Änderung hinzugefügt habe. Ich vermute, aber ich weiß nicht genau, dass XCode beim Hinzufügen dieses Frameworks versucht hat, etwas Kluges zu tun, indem es diese Überschreibung meinem Ziel hinzugefügt hat. Ich habe es zu keinem Zeitpunkt explizit gemacht. Die Warnungen betrafen beispielsweise die URLByAppendingPathComponent-Methode von NSURL, die erst in SDK 4.0 angezeigt wurde. Vor dem Hinzufügen des MessageUI-Frameworks habe ich diese Warnung nie erhalten. Und da ich die Außerkraftsetzung entfernt habe, bekomme ich sie nicht mehr.
quelle
Ich hatte dieses Problem und durch Importieren wurde es
QuartzCore
behoben.quelle
Das Ändern von "Nur aktive Architekturen erstellen" in "Ja" in "CordovaLib.xcodeproj ->" Build-Einstellungen "hat mir geholfen. Früher lief die App auf dem Simulator, aber nicht auf dem Gerät.
quelle
Möglicherweise müssen Sie Ihre Build-Einstellungen aktualisieren.
Überprüfen Sie die iOS-Zielversion und die Prozessorarchitekturen, da Sie möglicherweise nicht über die alten SDKs mit XCode 4 verfügen.
Möglicherweise wird in den Build-Einstellungen «Missing SDK» angezeigt. Ändern Sie das auf das, was gilt.
quelle
Ich hatte das gleiche Problem: Ich habe gerade versehentlich eine .m-Datei gelöscht, während .h im Projekt war. Das Problem ist verschwunden, als ich die .m-Datei wiederhergestellt habe.
quelle
Stellen Sie sicher, dass kein bestimmter Framework-Suchpfad angegeben ist. Wenn Sie zu den Informationen auf dem Ziel gehen und nur die Einträge für den Framework-Suchpfad entfernen, sollten die Standardeinstellungen für Ihre angegebene Bereitstellungsversion verwendet werden.
quelle
Ich versuche nur eine
category class
Datei zu erstellen und habe dieses seltsame Problem ... und schließlich ...Falscher Weg zum Erstellen einer Kategorieklasse, die das Problem verursacht:
New File
->Cocoa Touch
->Objective-C class
, dann habe ich den Namen der Dateien in Kategorie Klasse wie Name geändert .. (dhOriginalClass_CategoryName.h/m
zuOriginalClass+CategoryName.h/m
, und auch den Inhalt in der Datei geändert).Richtiger Weg hierher:
New File
->Cocoa Touch
->Objective-C category
und es werden automatisch Dateien generiert (OriginalClass+CategoryName.h/m
).Oh, wie dumm ich bin !!
quelle
Wenn Sie CoreData verwenden und XCode zum Generieren von NSManagedObject-Unterklassen für Ihre Entitäten verwenden, stellen Sie sicher, dass Sie nur eine für jede Entität generieren.
Mein Problem war, dass mehrere NSManagedObject-Unterklassen für dieselbe Entität generiert wurden (und in verschiedenen Ordnern abgelegt wurden).
Ich habe gerade alle gelöscht und die NSManagedObject-Unterklassen neu generiert.
quelle
Um der Liste der seltsamen Dinge hinzuzufügen, die dieses Problem behoben haben ...
Ich hatte einige const CGFloat-Variablen in einer globalen Header-Datei wie diese
In dem Moment, als ich diese entfernte, war alles in Ordnung :)
quelle
NSString static *key = @"someKey"
zuconst NSString *key = @"someKey"
Ich hatte genau das gleiche Problem, nur weil ich zwei gleiche Konstanten in verschiedenen Klassen hatte. Dieses Problem kann auch auftreten, wenn Sie eine .m-Datei und keine .h-Datei importieren
quelle
Sie sind sich nicht sicher, ob es verwandt ist, aber da Sie drei20 Bibliotheken betreiben, sollten Sie diesen Beitrag auf ihrer Website überprüfen: http://three20.info/article/2011-03-10-Xcode4-Support
quelle
Ich hatte das gleiche Problem und habe es gelöst. In meinem Fall hat die Einstellung "Architekturen" das Problem verursacht. In meiner Projektdatei auf der Registerkarte Build-Einstellungen wurden Architekturen auf armv6 festgelegt. Ich habe es in Standard (armv7) geändert, mache sauber und baue. Dann hat es geklappt!
quelle
In meinem Fall bestand das Problem darin, dass unterschiedliche Architekturen unter verschiedenen Zielen angegeben wurden. Ich habe mein Anwendungsziel mit armv6, armv7 und cocos2d mit Standard (amrv7) erstellt. Gehen Sie in die Build-Einstellungen und stellen Sie sicher, dass Ihre Architekturen für alle Ziele übereinstimmen.
quelle
Ich habe dieses Problem zu komisch gelöst!
Gehen Sie zu Ziel > Phasen erstellen > Binär mit Bibliotheken verknüpfen :
Entfernen Sie alle Ihre Frameworks und fügen Sie sie erneut hinzu!
Hoffe es funktioniert bei dir!
quelle
Für schnelle Sprache ...
Ich erhalte die Fehlermeldung "ld: Datei zu klein (Länge = 0) ...."
In meinem Fall bereinige ich einfach das Projekt und baue es dann neu auf.
Schritte:-
1) gehe zu Projekt -> Reinigen
2) gehe zu Projekt -> Erstellen
Hoffe das hilft..
quelle
Das hat mir einen Trick getan:
Gehe zu
1) Produkte> sauber
2) Windows> Projekte
3) Wählen Sie Ihr Projekt aus und klicken Sie auf " Löschen " abgeleitete Daten
4) Produkte> Erstellen
quelle
Eine Möglichkeit: Aktivieren Sie "Dead Code Stripping" in den Xcode 4 Build-Einstellungen.
Eine andere Möglichkeit: Möglicherweise haben Sie für ein Framework, das zuvor GCC verwendet hat, auf LLVM umgestellt. Wenn Sie zu GCC (oder LLVM GCC) zurückkehren, werden diese Warnungen möglicherweise entfernt.
quelle
Ich habe fälschlicherweise eine neue Konstante mit demselben Namen wie eine vorhandene Konstante in einer anderen Datei definiert und diesen Fehler bei der Verwendung von xCode 4.3.1 verursacht. xCode hat sich nicht beschwert, aber der Compiler mag es nicht.
quelle
Ich konnte diesen Fehler beheben, indem ich "Bibliothekssuchpfade" bearbeitete.
Es tauchte an erster Stelle auf, weil ich ein paar Ordner verschoben hatte, und das führte dazu, dass meine Build-Einstellungen zwei verschiedene Suchpfade hatten, da sie automatisch zu Ihren Build-Einstellungen hinzugefügt werden, wenn Sie eine Bibliothek / ein Framework verknüpfen, dies jedoch nicht immer entfernt.
Wenn Sie also eine verknüpfte Bibliothek / ein verknüpftes Framework in ein anderes Verzeichnis verschieben und erneut verknüpfen, müssen Sie den Suchpfad manuell bearbeiten.
Sie können dem möglicherweise ausweichen, indem Sie die Bibliothek / das Framework entfernen, bevor Sie es verschieben, aber das habe ich nicht getestet.
quelle