2012-08-24 8 views
12

Ich bin dabei, ein großes C++ - Projekt (irgendeine Art von Bibliotheksprojekt, es enthält absolut keine GUI) zu Android zu portieren. Es ist eigentlich ein Visual C++ - Projekt, wird aber als Zwischenschritt nach Linux portiert. Ich weiß, dass Android kein "volles" Linux ist und nicht behauptet, alle POSIX-Funktionen bereitzustellen, aber ich weiß auch, dass es viele "POSIXish-Funktionen" auf Android unter Verwendung des NDK gibt.Was sind die wichtigsten POSIX-Funktionen, die in Android nicht verfügbar sind?

Nun meine eigentliche Frage ist:

Welches sind die größten/wichtigsten Funktionen, die nicht auf Android verfügbar sind, verglichen mit dem vollständigen POSIX-Set? Das kann ich bei der Portierung von Visual C++ auf Linux GCC berücksichtigen.

Ich habe versucht, etwas auf Google zu finden, fand aber nichts wirklich hilfreich, nur hier und da ein paar Sachen, die erwähnt, dass es einige POSIX-Funktionen auf Android sind ...

+2

vielleicht kann Ihnen das helfen - http://mobilepearls.com/labs/native-android-api/ und hier einige weitere Einblicke -http: //stackoverflow.com/questions/10235403/porting-embedded-visual-c -code-to-android und hier https://groups.google.com/forum/?fromgroups=#!topic/android-ndk/xZES51OYakY –

+0

http://stackoverflow.com/questions/4610086/pthread-cancel-alternatives -in-android-ndk – crossle

Antwort

3

Bionic eine Umkodierung von Google. Es ist klein, aber für Android optimiert.

Die einzige große Sache, die ich weiß, dass es fehlt, ist in der Tat die pthread_cancel() Funktion.

Meine Erfahrung ist, dass, wenn Sie es erfolgreich auf GNU/Linux, ohne Aufrufe portieren, dann sollten Sie meistens in Ordnung sein.

BTW, welche Art von Bibliothek möchten Sie erstellen? Was benutzt es? Netzwerk, Threads ...

PS: Auch Linux ist nicht voll POSIX.

2

Shared Memory ist auch etwas, das Sie möglicherweise anders in Android implementiert finden. wurde hart getroffen, als ich versuchte, mit shm_open und shm_unlink auf dem Android-Kernel zu arbeiten. Android implementiert asynchronen gemeinsamen Speicher (ashmem).

+0

Ja, man muss ashmem_create_region aufrufen und den zurückgegebenen Dateideskriptor zwischen den Prozessen per Binder an mmap übergeben. – olegst

Verwandte Themen