2012-10-03 5 views
7

Also habe ich gerade aktualisiert Xcode zu 4.5 und war in der Lage, meine Hände auf einem iOS6 Telefon zu bekommen. Ich habe Tests an den Simulatoren gemacht (4.3/5.1/6.0), aber als ich mich entschieden habe, auf dem tatsächlichen iOS 6 Telefon aufzubauen, gab es mir diesen Fehler.Xcode iOS6 kompilieren Fehler: Keine Architektur

No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=armv7s, VALID_ARCHS=armv6 armv7 i386). 

Ich habe einige Lookup und fixiert sie durch in Build-Einstellungen gehen die gültigen Architekturen zu ändern armv7s aufzunehmen und es tat, was sie zu tun, war wohl zu.

JEDOCH durch fügte hinzu, dass ich diesen Fehler bekam

ld: file is universal (3 slices) but does not contain a(n) armv7s slice: some static library framework for architecture armv7s 

Nach einigem suchen es mir fühlt sich die statische Bibliothek Rahmen alle Probleme verursacht, da es nicht iOS unterstützt das 6 und ich bin nicht zu optimistisch dass es leicht repariert werden kann. Aber da ich meine genaue Situation im Internet nicht gut einschätzen konnte, hoffe ich, dass es jemanden gibt, der das besser kennt als ich und mir helfen kann. Dank

Hinweis: dass statische Bibliothek überall im Code ist, entfernt es so ziemlich keine Option

Antwort

2

Xcode 4.5 nicht ARMv6 mehr unterstützt, so müssen Sie diese Architektur entfernen.

Wie Sie bereits herausgefunden haben, scheint die von Ihnen verwendete Bibliothek armv7 nicht zu unterstützen, was jetzt wichtig ist.

Ich denke, es gibt keine Alternative zum Kompilieren der Bibliothek mit dem richtigen Ziel. Wenn Sie den Quellcode haben, sollte dies trivial sein; Wenn es sich um eine Drittpartei handelt, sind Sie auf die Aktualisierung angewiesen. Sie werden jedoch wissen, dass ohne Aktualisierung ihrer Bibliothek das Ende ihres Lebens erreicht hat.

+0

Es scheint nur wie es ist die statische Bibliothek aktualisiert werden muss, ich habe versucht, Chris Vorschlag, aber es hat nicht funktioniert. – user1289479

5

Um zu bauen, alle statischen Bibliotheken eine Anwendung Links gegen muss Code für alle Architekturen Anwendung zu erzeugen .

Es sieht so aus, als ob Xcode 4.5 Ihr Projekt aktualisiert hat, um armv7s-Code zu erstellen, aber es versäumt hat, armv7s den aktiven Architekturen der Anwendung hinzuzufügen.

Sobald Sie das behoben haben, sieht es aus wie das Problem ist, dass die statische Bibliothek Armv7s Code nicht produziert, aber Ihre Anwendung versucht, für Armv7s zu bauen.

Wenn das das Problem ist, gibt es zwei Möglichkeiten, das zu beheben. Entweder Sie möchten, dass Ihre Anwendung nur ARMv7-Code (die Beseitigung der Notwendigkeit für armv7s Code) zu generieren, für die Sie benötigen, um Ihre Anwendung Zielsystemeinstellungen zu ändern:

enter image description here

... oder Sie wollen Ihre Anwendung und alle damit verknüpften statischen Bibliotheken Buildeinstellungen haben, die wie folgt aussehen:

enter image description here

ARMv7 Code auf irgendetwas von den 3gs nach oben laufen. armv7s code läuft nur auf dem iPhone 5 und wird etwas schneller sein.

Wenn Sie also Zugriff auf ein iPhone 5 haben, um zu testen, und Sie den Quellcode für die statische Bibliothek haben, dann ist die zweite Option wahrscheinlich am besten. Andernfalls, vorausgesetzt, dass Ihre Bibliothek mindestens armv7-Code generiert, sollte es auch in Ordnung sein, solange Ihre Anwendung nicht versucht, armv7s zu bauen.

Wenn die Bibliothek nur armv6-Code erstellt, der nicht von xCode 4.5 unterstützt wird, müssen Sie die Build-Einstellungen ändern, um mindestens armv7-Code zu erzeugen.

+0

Nun, ich kann nicht wirklich die armv7s Architektur entfernen, da es mir die keine Architektur Fehler wieder geben wird, aber wie kann ich hinzufügen, um es in der statischen Bibliothek? – user1289479

+0

Sorry, hätte klarer sein müssen. Wird bearbeiten. –

0

armv7s entfernen und hinzufügen ARMv7 (und/oder ARMv6)

+0

Gültige Architektur: (Vor) ARMv6 ARMv7 i386 (After) ARMv6 ARMv7 i386 armv7s ich es hinzuzufügen hatte in der No-Architekturen, um loszuwerden, kompilieren Fehler – user1289479

+0

Können Sie die Base-SDK auf iOS 5 ändern und es so laufen? Ich kann mich nicht mehr an meinen Kopf erinnern. – Vinnie

10

Sie können versuchen, "Nur aktive Architektur erstellen" zu ändern. JA -> NEIN. Funktioniert gut für mich.

1

Ich habe ähnliches Problem. Habe es gelöst, indem ich 'Build active Architecture Only' in 'Build settings of Target Project' auf 'NO' gesetzt habe.

enter image description here

Verwandte Themen