我目前正在编写一个类型分类应用程序作为我在计算机工程的最后一年项目.我最初在C中编写了特征提取代码(实现FFTW),现在我需要通过NDK在Android上实现它.
这是我的第一个NDK项目,所以我仍然掌握了一些东西,但我根据this guide编译了针对Android的FFTW3库.我没有做最后一步因为我认为它不适合我需要.
我的问题是,在编译步骤之后,如何使用调用它的主NDK应用程序中的库?我只是将LOCAL_STATIC_LIBRARIES设置为我刚刚编译的libfftw3.a,在Application.mk中通常做一切吗?然后我不需要像往常那样拥有任何-lfftw3链接器标志?
最佳答案
您可以使用prebuit FFTW库(无论您是如何构建它的).
原文链接:https://www.f2er.com/android/430474.html或者你可以在整个项目的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_FILES和LOCAL_C_INCLUDES放到单独的.mk文件中通常会更好.
您可以在NDK发行版的docs / ANDROID-MK.html文档中阅读有关Android.mk文件的更多信息.