2015-08-21 17 views
6

Ich habe einige CPP-Dateien, die ich kompilieren möchte, um auf Simulator und iPhone zu laufen. Was ich versuche zu tun ist:Kompilieren von C++ - Dateien für alle iOS-Architekturen

g++ -c file1.cpp file2.cpp -std=c++11 
ar rcs libabc.a *.o 

Und dies stellt in Ordnung, aber nur für x86_64 architecture..Obviously ...

Gibt es eine einfache Weise, die ich diese 2 Zeile Befehl, um bearbeiten kann Haben Sie eine Bibliothek für alle Architekturen (x86_64 i386 armv7 armv7s arm64) kompiliert? Oder sollte ich ein paar riesige Skripte bauen, um diese Bibliothek zu haben? Wenn ja? Gibt es dafür fertige Skripte?

Ich habe auch versucht, es zu laufen -arch mit:

g++ -c file1.cpp file2.cpp -std=c++11 -arch armv7 -arch x86_64 

aber diese sind einige Fehler ich

//----------------- Error 1 -------------------------// 

enter image description here

//----------------- Error 2 -------------------------// 

enter image description here

bekommen 0
//----------------- Error 3 -------------------------// 

enter image description here

Dank!

+0

@JBL versucht, das Skript auszuführen, aber kein Glück. Was soll die ./configure im Skript bedeuten ?? und auf welcher Ebene muss ich das Skript setzen? auf der gleichen Ebene meiner .h und .cpp-Dateien? – Grace

+0

Ich habe mich ein bisschen geirrt, das ist nicht wirklich passend für dein Problem. Versuchen Sie, diese Dateien als Bibliothek für die Verwendung in Ihrer iOS App zu kompilieren? – JBL

+0

@JBL: Ja, das ist, was ich versuche zu tun – Grace

Antwort

0

Besser für jeden Bogen einzeln bauen und dann zusammen kleben. Es hilft bei der Ermittlung von anderen oder falsch enthaltenen plattformspezifischen Headern und anderen.

Aber aus meiner Erfahrung ist das alles nicht wert, wenn Sie vermeiden können, über Konsole zu bauen. Erstellen Sie ein Xcode-Projekt und verwenden Sie ein gefälschtes Framework, wenn es Ihnen passt. Oder bauen Sie die statischen Bibliotheken einzeln und fügen Sie sie später selbst zusammen.

+0

Hi @benjist, auch wenn ich für jeden einzeln kompiliere, funktioniert das auch nicht. Ich habe bereits Bibliotheken von Xcode kompiliert, aber ich muss es auch über die Konsole arbeiten lassen. – Grace

+0

Gut, dann müssen Sie fiedeln und finden Sie die richtigen Include-Pfade für jede unterstützte Architektur und Sie müssen den richtigen Compiler verwenden. Das ist dein tatsächliches Problem.Der von Ihnen verwendete Compiler kann nicht für die ausgewählte Architektur erstellt werden, und die architekturspezifischen Includes müssen sich auf architekturspezifische Pfade innerhalb der Xcodes-Toolchain beziehen. Alle diese Compiler und Includes befinden sich in Xcode, wenn Sie auch die Befehlszeilenwerkzeuge installieren. Oder Sie setzen alle Compiler selbst auf - etwas, was Sie wirklich nicht tun wollen. – benjist

4

Haben Sie das Compiler-Flag -arch in Betracht gezogen?

g++ -c file1.cpp file2.cpp -std=c++11 -arch x86_64 -arch i386 -arch armv7 #... 
+0

Ja, es gibt mir seltsame Fehler wie:/usr/include/sys/cdefs.h: 680: 2: Fehler: Nicht unterstützte Architektur oder /usr/include/sys/_types/_ssize_t.h30:9: Fehler: unbekannter Typ Name '__darwin_ssize_t' – Grace

+0

Frage aktualisiert – Grace

+1

@Grace: It bedeutet, dass das SDK nicht kompatibel mit '-arch x86_64' oder' -arch i386' ist (mit '-v' überprüfen). Diese Antwort ist richtig. – Thomas