如 this answer 中所述,我从 github 下载了 libjpeg 8d 并将其放在文件夹 {ANDROID_APP}/jni/libjpeg
中。这个库有它自己的 Android.mk
,所以我尝试以这种方式将它包含在我的 {ANDROID_APP}/jni/Android.mk
的末尾:
包含 $(LOCAL_PATH)/libjpeg/Android.mk
注意:我使用的是最新版本的 android NDK (r8c)
在运行 ndk-build 之后,我仍然得到这个错误:
ANDROID_APP/jni/libfoo/foo_analysis.c:36:21: fatal error :jpeglib.h: 没有那个文件或目录
这是我的全局 Android.mk
的结构:
LOCAL_PATH := $(call my-dir)
# libFoo
include $(CLEAR_VARS)
LOCAL_MODULE := libfoo
LOCAL_MODULE_FILENAME := libfoo
LOCAL_SRC_FILES := libfoo/foo.c libfoo/foo_analysis.c libfoo/foo_extract.c
LOCAL_STATIC_LIBRARIES := libbmp # declared previously but not shown in this example
LOCAL_CFLAGS = ${FLAGS}
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/libfoo
LOCAL_EXPORT_LDLIBS := -llog
include $(BUILD_STATIC_LIBRARY)
# libBar
include $(CLEAR_VARS)
LOCAL_MODULE := libbar
LOCAL_MODULE_FILENAME := libbar
LOCAL_SRC_FILES := bar/bar.c
LOCAL_STATIC_LIBRARIES := libfoo
LOCAL_CFLAGS = ${FLAGS}
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/bar
LOCAL_EXPORT_LDLIBS := -llog
include $(BUILD_STATIC_LIBRARY)
# callbar
LOCAL_MODULE := libcallbar
LOCAL_MODULE_FILENAME := libcallbar
LOCAL_SRC_FILES := com_androidapp_nativeC_callbar.c
LOCAL_STATIC_LIBRARIES := libbar
LOCAL_CFLAGS = ${FLAGS}
include $(BUILD_SHARED_LIBRARY)
#libjpeg
include $(LOCAL_PATH)/libjpeg/Android.mk
我尝试使用 LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/libfoo $(LOCAL_PATH)/libjpeg
和 LOCAL_C_INCLUDES := $(LOCAL_PATH)/libjpeg
在 libFoo 模块中,但我仍然遇到同样的错误。
最佳答案
刚刚查看了 jpeg8d-master 文件夹中的 Android.mk,似乎什么都没有。
我试图直接根据 STANDALONE-TOOLCHAIN.HTML 编译库
我接下来要做的是:$export NDKROOT=/home/alex/tools/android-ndk-r8c(你的 NDK 在哪里)$export SYSROOT=$NDKROOT/platforms/android-9/arch-arm(或任何其他 android平台)
但是来自 jpeg8d-master 的文件有 windows\r 符号,我删除了 config.guess、config.sub、depcomp 而不是使用 $automake -a 命令。并从 glib-2.34.0 替换 ltmain.sh
比 $./configure CC="$NDKROOT/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc --sysroot=$SYSROOT"-- host=arm-linux-androideabi $make
接下来尝试预构建功能 NDK - How to use a generated .so library in another project和 NDK/PREBUILTS.HTML
关于android - 在 NDK 构建中包含 libjpeg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13516762/