将FFTW链接到Android NDK应用程序中



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

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

我的问题是,在编译步骤之后,如何在调用它的主要NDK应用程序中使用该库?我在应用程序中做的一切正常吗?仅将LOCAL_STATIC_LIBRARIES设置为libfftw3。a我刚刚编译的?然后我就不需要像通常那样有-lfftw3链接器标志了,对吧?

您可以使用预先构建的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)

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

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

最新更新