android - 在 NDK 构建中包含 libjpeg

标签 android android-ndk libjpeg

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)/libjpegLOCAL_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/

相关文章:

android - 什么是 Android JNI 应用程序上下文中的模块?

android - 没有找到 JNI_OnLoad ... 跳过 init

android - Android 上的 OpenGL ES 坐标系?

Android、proguard 和 paypal

android - 自动从联系人生成whatsapp组

windows - 在 Windows 上链接到 libjpeg 时如何解析 "undefined reference"?

python - PIL/JPEG 库 : "decoder jpeg not available"

macos - 如何修复 Homebrew 权限?

java - BigDecimal 四舍五入不四舍五入

java - Mediaplayer 在新 Activity 5 秒后停止