Связывание FFTW с приложением Android NDK

В настоящее время я пишу приложение для классификации жанров в качестве моего последнего проекта по компьютерной инженерии. Сначала я написал код извлечения функций (реализующий FFTW) на C, а теперь мне нужно реализовать его на Android через NDK.

Это мой первый проект NDK, поэтому я все еще разбираюсь во всем, но я скомпилировал библиотеку FFTW3 для Android в соответствии с это руководство. Я не сделал самый последний шаг, потому что не думал, что он подходит для того, что мне нужно.

У меня вопрос: как мне после этапа компиляции использовать библиотеку в основном приложении NDK, которое ее вызывает? У меня все нормально в Application.mk только с LOCAL_STATIC_LIBRARIES, установленным в libfftw3.a, который я только что скомпилировал? И тогда мне не нужно иметь какие-либо флаги компоновщика -lfftw3, как обычно, верно?


person JonoCoetzee    schedule 29.08.2011    source источник


Ответы (1)


Вы можете использовать предварительно собранную библиотеку FFTW (независимо от того, как вы ее собрали).

Или вы можете собрать FFTW в Android.mk makefile со всем проектом.

Android.mk содержимое будет:

# Prebuilt FFTW library
include $(CLEAR_VARS)
LOCAL_MODULE := fftw
include $(PREBUILT_STATIC_LIBRARY)

# or

# Build FFTW library
include $(CLEAR_VARS)
LOCAL_MODULE := fftw
# TODO put your static libs build flags
include path_to_fftw_sources/$(LOCAL_MODULE).mk
include $(BUILD_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := YourProject
# TODO put your shared lib build flags
include path_to_your_project/$(LOCAL_MODULE).mk
LOCAL_STATIC_LIBRARIES += fftw
include $(BUILD_SHARED_LIBRARY)

Я написал path_to_fftw_sources/$(LOCAL_MODULE).mk для создания статической библиотеки fftw и path_to_your_project/$(LOCAL_MODULE).mk для создания общей библиотеки. Часто лучше поместить LOCAL_SRC_FILES и LOCAL_C_INCLUDES в отдельный файл .mk.

Вы можете прочитать больше о Android.mk файле в docs/ANDROID-MK.html документе в дистрибутиве NDK.

person artyom.stv    schedule 04.02.2012