mit vorgefertigten statischen Bibliotheken für die Android NDK-Entwicklung

8

Ich versuche, eine Android-Anwendung zu erstellen, die statische Bibliotheken aus einem vorhandenen C ++ - Code verwendet. Wie auch immer, ich kann scheinbar nichts aufbauen, hier sind die Schritte, die ich bisher unternommen habe.

Ich habe ndk-r5b und habe die Standalone Toolchain nach ndk / docs / STANDALINE-TOOLCHAIN.html aufgebaut. Ich habe dann den autonomen Toolchain-Compiler (arm-linux-androideabi-g ++) anstelle von g ++ für das CXX-Flag im Makefile verwendet, das die statischen Bibliotheken kompiliert, die ich brauche. Dies kompiliert ohne Fehler und es werden 3 statische Bibliotheken erzeugt. Hier ist ein Codeschnipsel einiger Flags, die zum Erstellen der vorgefertigten Bibliotheken verwendet werden:

%Vor%

Hier ist eine Beispielzeile, die beim Kompilieren aus dem Makefile erzeugt wird:

%Vor%

Als nächstes baue ich die App unter Verwendung von ndk-build mit dem folgenden für Android.mk:

%Vor%

Die vorgefertigten Bibliotheken kompilieren mit dem Standalone-Toolchain-Compiler, der im android ndk enthalten ist. Es gibt jedoch viele nicht aufgelöste Verweise auf Ostream, wenn die gemeinsam genutzte Bibliothek mit den vorgefertigten Bibliotheken, die ndk-build verwenden, verknüpft wird. Zum Beispiel:

%Vor%

Ich nehme an, dass ich einige wichtige Flags vermisse oder etwas nicht richtig mache, wenn ich mit dem Standalone-Compiler kompiliere, aber jede Hilfe oder Einsicht zu diesem Thema wäre sehr zu begrüßen, da ich diese Antwort bei Google oder in keinem von ihnen finden kann die android ndk docs. Danke!

    
Greg 22.06.2011, 07:36
quelle

2 Antworten

3

Nun, Sie können das Problem beheben, indem Sie eine Datei Application.mk in demselben Ordner erstellen, in der sich die Datei Android.mk befindet, die Folgendes enthält:

%Vor%

für die Verwendung des statischen stlport, der sich innerhalb des Android NDK befindet.

    
Christoph Martens 11.09.2012 22:15
quelle
1

Ich hatte das gleiche Problem und löste es, indem ich ein Modul für die C ++ - Standardbibliothek hinzufügte. Die Bibliothek, die durch das ndk-build-System verbunden ist, ist von der falschen Stelle (Plattformen / android-9 / arch-arm / usr / lib in meinem Fall).

%Vor%

Fügen Sie das Modul-Tag der Liste der statischen Bibliotheken hinzu:

%Vor%

Das build/core/build-binary.mk prepends -L$(SYSROOT)/usr/lib wenn Bibliotheken in LOCAL_LDLIBS angegeben sind, aber in meinem Fall ist das der falsche Pfad.

Ich weiß nicht, ob es einen fehlenden Schritt gibt, der das korrekte libstdc ++ an diesen Ort kopieren soll, aber der obige Ansatz funktioniert.

    
Kevin Beck 23.09.2011 03:20
quelle