为Android构建ImageMagick

为Android构建ImageMagick,android,c,imagemagick,libjpeg,Android,C,Imagemagick,Libjpeg,我正在使用它为Android构建ImageMagick库。当尝试ndk构建ImageMagick时,我最终出现以下错误 primary0:AndroidMagickActivity primary0$ ~/ndk/ndk-build SharedLibrary : libandroid-magick.so /Users/primary0/ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/../lib/gcc/ar

我正在使用它为Android构建ImageMagick库。当尝试ndk构建ImageMagick时,我最终出现以下错误

primary0:AndroidMagickActivity primary0$ ~/ndk/ndk-build 
SharedLibrary  : libandroid-magick.so
/Users/primary0/ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/libcoders.a(jpeg.o): in function ReadJPEGImage:jni/../ndk-modules/ImageMagick-6.7.3-0/coders/jpeg.c:988: error: undefined reference to 'jpeg_std_error'
/Users/primary0/ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/libcoders.a(jpeg.o): in function ReadJPEGImage:jni/../ndk-modules/ImageMagick-6.7.3-0/coders/jpeg.c:995: error: undefined reference to 'jpeg_destroy_decompress'
/Users/primary0/ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/libcoders.a(jpeg.o): in function ReadJPEGImage:jni/../ndk-modules/ImageMagick-6.7.3-0/coders/jpeg.c:1004: error: undefined reference to 'jpeg_CreateDecompress'
/Users/primary0/ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/libcoders.a(jpeg.o): in function ReadJPEGImage:jni/../ndk-modules/ImageMagick-6.7.3-0/coders/jpeg.c:1006: error: undefined reference to 'jpeg_set_marker_processor'
/Users/primary0/ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/libcoders.a(jpeg.o): in function ReadJPEGImage:jni/../ndk-modules/ImageMagick-6.7.3-0/coders/jpeg.c:1007: error: undefined reference to 'jpeg_set_marker_processor'
/Users/primary0/ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/libcoders.a(jpeg.o): in function ReadJPEGImage:jni/../ndk-modules/ImageMagick-6.7.3-0/coders/jpeg.c:1008: error: undefined reference to 'jpeg_set_marker_
.
.
.
collect2: ld returned 1 exit status 
make: *** [obj/local/armeabi/libandroid-magick.so] Error 1
primary0:AndroidMagickActivity primary0$ 
定义错误中列出的常量的头文件包含在jpeg.c中

#include "jpeglib.h"

你们有谁知道我为什么会出现未定义的引用错误吗?

链接器不是在寻找“常量”,而是在寻找调用函数的跳转地址。您的代码显然使用了目标代码中不可用的函数。这可能有多种原因。您没有告诉编译器使用可用的库,或者(在您的情况下更可能)没有告诉编译器也需要为此共享对象编译
jpeg.c
。但是,如果不查看makefile,就很难进行诊断


简单看一下git存储库的ndk模块文件夹,我觉得您需要构建多个模块。也许你只是按错误的顺序做了。首先尝试构建
jpeg

感谢您的回复。我想由于我问题的性质,不会有任何直接的答案。我需要更彻底地检查Makefile和其他项目文件,并找出问题所在。谢谢