2013-02-23 2 views
0

나는 https://github.com/lilac/Android-ImageMagick을 사용하여 Android 용 ImageMagick 라이브러리를 구축하고 있습니다. ImageMagick을 ndk-build하려고 할 때 나는 아래의 오류로 끝납니다. Android 용 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