web-dev-qa-db-de.com

Xcode 4 Final - "armv6 armv7" - Problem beim Verknüpfen mit Armv6-Bibliotheken

Bis zum xcode 4 final (ich verwendete 3.latest und 4 GM für die Zeit, in der es verfügbar war), geschah dies nicht. Beim Upgrade auf die endgültige Version von xcode 4 bekam ich einen Verbindungsfehler, als ich versuchte, die Armv7-Version mit meiner Nicht-Armv7-Bibliothek zu verknüpfen (mein Projekt ist mit den standardmäßigen Standard-Armv6-Armv7-Architekturen ausgestattet):

ld: warning: ignoring file ../bin/iOS static/arm/libssl.a, file was built for archive which is not the architecture being linked (armv7)
ld: warning: ignoring file ../bin/iOS static/arm/libcrypto.a, file was built for archive which is not the architecture being linked (armv7)
Undefined symbols for architecture armv7: -- list of symbols --

Die Version von Armv6 kann problemlos kompiliert werden, der gesamte Kompilierungsvorgang schlägt jedoch mit 77 Verbindungsfehlern fehl. 

Ich verstehe, dass dies das erwartete Verhalten ist, und es wird keine Verbindung zu Armv7 mit einer Armv6-Lib herstellen. Der Fix setzt mein Projekt nur auf armv6. Meine Frage hier ist: Warum funktionierte das in den vorherigen Versionen von xcode? 

Wenn ich nur armv6 eingestellt habe, bekomme ich folgende Warnung:

Check dependencies

[BWARN]warning: all apps should include an armv7 architecture (current ARCHS = "armv6").

Ich mag es nicht, Warnungen zu sehen :-) Hat jemand ähnliche Probleme?

Vielen Dank,

Fernando

17
cusquinho

Ich habe die aktive Architektur nur auf der Registerkarte Projekt -> Build-Einstellung -> Architekturen auf Ja gesetzt.

22
Rick

In iOS SDK 4.3 sieht es so aus, als würde der Linker die Verwendung einer armv6-Bibliothek in einer armv7-Binärdatei einfach ablehnen. Dies war zuvor nicht der Fall.

Deshalb musste ich das Projekt http://code.google.com/p/ios-static-libraries/ - aktualisieren, um sowohl die armv6- als auch die armv7-Version der Bibliotheken zu erstellen.

7
Pol

Ich habe 3rd Party Framework mit einigen Demoklassen in das Projekt eingefügt, aber nachdem ich es erfolgreich implementiert hatte, entfernte ich diese Demoklassen und seitdem begann der Fehler Error "Ld: .. ......., Datei ist universell, enthält jedoch kein a(n) armv6-Segment für Architektur armv6 "

Nachdem ich mir einen ganzen Tag den Kopf gekratzt hatte, fand ich diese Lösung am nächsten Morgen vielleicht hilfreich für andere iPhone-Freunde, da ich die Schmerzen kenne 

Ziele -> "Ihr Projektziel" -> Informationen abrufen -> Aktive Architektur erstellen nur auf JA gesetzt

Das ist es..

3
Kiran S

Hatte dasselbe Problem. Aber der Grund war anders, denke ich. Ich habe die library.a-Datei verwendet, die für den Simulator erstellt wurde, und versuchte, sie auf dem Gerät auszuführen. Ich wusste, dass ich ein anderes brauche .a-Dateien für Simulator und Gerät. Ich hoffe das hilft jemandem;)

1
Zaraki

Obwohl ich immer noch nicht weiß, warum dies nur in der endgültigen Version von xcode 4 geschah, fand ich vor einigen Tagen heraus, dass meine externen Bibliotheken (SSL und Crypto) sowohl gegen Armv6 als auch gegen Armv7 kompiliert wurden:

http://code.google.com/p/ios-static-libraries/

Dies wird das Problem beheben, wenn Sie zwei unterschiedliche Bibliothekssuchpfade definieren: einen für armv6, einen für armv7. 

Vielen Dank,

0
cusquinho