我目前正在编写一个流派分类应用程序,作为我计算机工程的最后一年项目。我最初用 C 语言编写了特征提取代码(实现 FFTW),现在我需要通过 NDK 在 Android 上实现它。
这是我的第一个 NDK 项目,所以我仍在掌握一些东西,但我已经根据 Android 编译了 FFTW3 库本指南 http://blog.jimjh.com/compiling-open-source-libraries-with-android-ndk-part-2.html。我没有执行最后一步,因为我认为这不适合我的需要。
我的问题是,在编译步骤之后,如何在调用它的主 NDK 应用程序中使用该库?我在 Application.mk 中的所有内容是否正常,只是将 LOCAL_STATIC_LIBRARIES 设置为我刚刚编译的 libfftw3.a ?然后我不需要像通常那样有任何 -lfftw3 链接器标志,对吗?
您可以使用预编译 FFTW 库(无论您如何构建它)。
或者你可以构建 FFTWAndroid.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
and LOCAL_C_INCLUDES
到单独的.mk
file.
您可以阅读更多有关Android.mk
文件输入docs/ANDROID-MK.html
NDK 发行版中的文档。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)