将FFTW链接到Android NDK应用程序

Jon*_*zee 5 android static-libraries fftw android-ndk

我目前正在编写一个类型分类应用程序作为我在计算机工程的最后一年项目.我最初在C中编写了特征提取代码(实现FFTW),现在我需要通过NDK在Android上实现它.

这是我的第一个NDK项目,所以我仍然掌握了一些东西,但我根据本指南编译了适用于Android的FFTW3库.我没有做最后一步,因为我认为这不是我需要的.

我的问题是,在编译步骤之后,如何使用调用它的主NDK应用程序中的库?我只是将LOCAL_STATIC_LIBRARIES设置为我刚刚编译的libfftw3.a,在Application.mk中通常做一切吗?然后我不需要像往常那样拥有任何-lfftw3链接器标志?

art*_*stv 4

您可以使用预编译 FFTW 库(无论您如何构建它)。

Android.mk或者您可以在makefile 中使用整个项目构建 FFTW 。

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)
Run Code Online (Sandbox Code Playgroud)

我已经编写了path_to_fftw_sources/$(LOCAL_MODULE).mk构建 fftw 静态库和path_to_your_project/$(LOCAL_MODULE).mk构建共享库的文章。通常最好将LOCAL_SRC_FILES和放入LOCAL_C_INCLUDES单独的.mk文件中。

您可以在 NDK 发行版的文档中阅读有关Android.mk文件的更多信息docs/ANDROID-MK.html