2013-02-23 117 views
0

我使用https://github.com/lilac/Android-ImageMagick为Android构建ImageMagick库。当试图ndk-build ImageMagick时,我会遇到下面的错误。适用于Android的Building 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" 

任何你们有一个想法,为什么我得到未定义的引用错误?

回答

1

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

简要介绍一下git仓库的ndk-modules文件夹,我感觉你需要构建多个模块。也许你只是以错误的顺序去做。先尝试建立jpeg

+0

感谢您的回复。由于我的问题的性质,我想不会有任何直接的答案。我需要更彻底地查看Makefile和其他项目文件并弄清楚。谢谢! – primary0 2013-02-24 09:20:56