compiling fftw3 in Android ndk

7

Hallo, ich bin neu bei Android-ndk bisher habe ich mit allen Beispielanwendungen in Android-ndk gearbeitet, jetzt versuche ich, fftw3-Bibliothek in Android zu portieren, können Sie plz vorschlagen mir Tutorial für diese.

Danke.

    
imaya 17.11.2010, 06:05
quelle

3 Antworten

17

Das FFTW3-Build-System nutzt Autotools, so dass Sie es nicht direkt mit dem Android NDK verwenden können. Ein guter Blogbeitrag, der sich mit diesem Thema befasst, ist hier .

Die Idee ist, eine richtige config.h -Datei offline zu erstellen und Android-Makefiles zu erstellen, die die fehlenden ersetzen, die normalerweise von den Autotools erzeugt werden.

Um ein modulares Layout für die verschiedenen nativen Module zu erreichen, die Sie verwenden könnten, würde ich Folgendes empfehlen:

Platziere diese zwei Dateien in deinem top jni/ -Verzeichnis:

Application.mk :

%Vor%

Android.mk :

%Vor%

Auf diese Weise können Sie einfach ein neues Modul hinzufügen, indem Sie ein jni/new_module_name -Verzeichnis erstellen und dann new_module_name zur APP_MODULES -Liste hinzufügen.

Erstellen Sie dann ein neues Verzeichnis jni/fftw3 und fügen Sie dort ein weiteres Application.mk hinzu:

Application.mk :

%Vor%

Dann legen Sie das ursprüngliche FFTW3-Paket unter jni/fftw3/project/jni .

An diesem Punkt müssen Sie ein config.h generieren. Sie können dies tun, indem Sie ein kleines Shell-Skript wie dies verwenden.

Der letzte Schritt besteht darin, das benötigte Android-Makefile zu erstellen. In jni/fftw3/project/jni setzen Sie einen oberen Android.mk :

%Vor%

Frow jetzt müssen Sie all diese sources.mk Dateien erstellen. Z.B. Ein typisches sources.mk sieht so aus:

rdft/sources.mk :

%Vor%

Rufen Sie das Skript ndk-build im obersten Verzeichnis Ihrer App auf, und Sie sollten zwei gebrauchsfertige FFTW3-Bibliotheken erhalten:

  • libs/armeabi-v7a/libfftw3.so
  • libs/armeabi/libfftw3.so
Matthieu Poullet 05.09.2011 13:18
quelle
1

Ich löse derzeit ähnliche Probleme, aber ohne signifikante Ergebnisse.

Da ich empfehlen kann, eine andere gut getestete Bibliothek wie JTransforms (Java ziemlich schnell) zu verwenden oder Badlogic KissFFT-Implementierung (JNI, etwa 2-mal schneller, numerisch instabil) zu finden.

    
Tomáš Bílek 03.05.2011 18:45
quelle
1

Nachdem ich festgestellt habe, dass es in der letzten fftw-Version eine Menge neuer Verzeichnisse gibt, die .c enthalten und nicht in der ursprünglichen Android.mk aufgelistet sind, bin ich zu faul geworden, um source.mk-generating script zu schreiben, und googelte stattdessen:

%Vor%

Danke an Sudhakar Fomra (sfomra at github), ich habe meinen Build in wenigen Minuten erledigt.

Ссылка

    
kagali-san 06.01.2014 12:16
quelle

Tags und Links