Frage

Ich versuche ZeroMQ C-Bindung, um in der Lage sein, es zu benutzen auf dem iPhone, hier sind meine Konfigurationsoptionen zu kompilieren:

./configure --host=arm-apple-darwin --enable-static=yes --enable-shared=no CC=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-gcc-4.2.1 CFLAGS="-pipe -std=c99 -Wno-trigraphs -fpascal-strings -O0 -Wreturn-type -Wunused-variable -fmessage-length=0 -fvisibility=hidden -miphoneos-version-min=3.1.2 -gdwarf-2 -mthumb -I/Library/iPhone/include -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk -mdynamic-no-pic" CPP=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/cpp AR=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ar AS=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/as LIBTOOL=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool STRIP=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/strip RANLIB=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ranlib

Es tatsächlich konfiguriert und kompiliert in Ordnung, aber wenn ich es auf Xcode Frameworks Abschnitt hinzufügen, bekommen ich warnen. ld: warning: in /path/to/app/libzmq.a, file was built for unsupported file format which is not the architecture being linked (armv7) und viele Symbole nicht gefunden Fehler

Wenn ich aktuelle aktive Architektur von ARMv6 zu ARMv7 ändern, Warnmeldung wird es ARMv6 ändern. Was mache ich falsch?

Danke, Dan

War es hilfreich?

Lösung

Es klingt wie Sie eine universellen ARMv6 / ARMv7 binär für das iPhone bauen (dies ist die Standardeinstellung, so dass macht Sinn). Das bedeutet, dass Sie eine Universal-Bibliothek Link gegen aufzubauen. Build beide Bibliotheken und dann lipo die beiden zu kombinieren, verwenden.

Zum Beispiel bauen die ARMv6 ein und legen Sie es auf armv6/libfoo.a und die ARMv7 eines bei armv7/libfoo.a. Dann führen

lipo -arch armv6 armv6/libfoo.a -arch armv7 armv7/libfoo.a -output libfoo.a -create

die Universalbibliothek libfoo.a erstellen.

Andere Tipps

In Anbetracht der Warnmeldung von ld, meine Vermutung ist, Sie nicht die Bibliothek für die richtige Plattform zu kompilieren. Und da Sie verwenden configure, meine Vermutung ist, Sie versuchen, die Bibliothek außerhalb von Xcode zu kompilieren und dann in Xcode bringen später zu verknüpfen in.

Vielleicht könnten Sie versuchen, configure laufen Ihre Header einzurichten, aber die eigentliche Kompilierung Schritt innerhalb Xcode?

Es gibt viele Fragen hier auf SO über das Kompilieren von Drittanbietern (extern) C oder C ++ Bibliotheken für die Verwendung in iPhone-Projekten.

Erstellen statische Bibliothek für iPhone

TiMidity: Hilfe benötigen diese Bibliothek für das iPhone Kompilieren

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top