안드로이드 개발 질문/답변
(글 수 45,052)
제목 그대로 오픈소스 전체를 다운받아서 일부를 build하기위해
ndk-build명령어를 입력하였습니다.
에러내용입니다.
Compile++ thumb : audioeffect_jni <= android_media_AudioEffect.cpp
/home/gc/myandroid/frameworks/base/media/jni/audioeffect/android_media_AudioEffect.cpp:22:23: error: utils/Log.h: No such file or directory
/home/gc/myandroid/frameworks/base/media/jni/audioeffect/android_media_AudioEffect.cpp:23:30: error: nativehelper/jni.h: No such file or directory
/home/gc/myandroid/frameworks/base/media/jni/audioeffect/android_media_AudioEffect.cpp:24:34: error: nativehelper/JNIHelp.h: No such file or directory
/home/gc/myandroid/frameworks/base/media/jni/audioeffect/android_media_AudioEffect.cpp:25:44: error: android_runtime/AndroidRuntime.h: No such file or directory
/home/gc/myandroid/frameworks/base/media/jni/audioeffect/android_media_AudioEffect.cpp:26:31: error: media/AudioEffect.h: No such file or directory
/home/gc/myandroid/frameworks/base/media/jni/audioeffect/android_media_AudioEffect.cpp:28: error: 'android' is not a namespace-name
/home/gc/myandroid/frameworks/base/media/jni/audioeffect/android_media_AudioEffect.cpp:28: error: expected namespace-name before ';' token
/home/gc/myandroid/frameworks/base/media/jni/audioeffect/android_media_AudioEffect.cpp:44: error: 'jclass' does not name a type
/home/gc/myandroid/frameworks/base/media/jni/audioeffect/android_media_AudioEffect.cpp:45: error: 'jmethodID' does not name a type
(중략..)
예측하기론 지금 헤더파일들이 하나도 연결이 되어있지 않은듯 합니다.
강제로 해당소스에 폴더를 생성하여 해더파일을 다 찾아서 넣어봤지만
기본적인 명령어들이 되지를 않습니다.
헤더파일들을 연결할 방법좀 알려주시면 감사하겠습니다;;
약한 지식으로나마 mk파일을 자세히 살펴봤지만 아무리해도 잘 안되서 질문드립니다.
ndk-build명령어를 입력하였습니다.
에러내용입니다.
Compile++ thumb : audioeffect_jni <= android_media_AudioEffect.cpp
/home/gc/myandroid/frameworks/base/media/jni/audioeffect/android_media_AudioEffect.cpp:22:23: error: utils/Log.h: No such file or directory
/home/gc/myandroid/frameworks/base/media/jni/audioeffect/android_media_AudioEffect.cpp:23:30: error: nativehelper/jni.h: No such file or directory
/home/gc/myandroid/frameworks/base/media/jni/audioeffect/android_media_AudioEffect.cpp:24:34: error: nativehelper/JNIHelp.h: No such file or directory
/home/gc/myandroid/frameworks/base/media/jni/audioeffect/android_media_AudioEffect.cpp:25:44: error: android_runtime/AndroidRuntime.h: No such file or directory
/home/gc/myandroid/frameworks/base/media/jni/audioeffect/android_media_AudioEffect.cpp:26:31: error: media/AudioEffect.h: No such file or directory
/home/gc/myandroid/frameworks/base/media/jni/audioeffect/android_media_AudioEffect.cpp:28: error: 'android' is not a namespace-name
/home/gc/myandroid/frameworks/base/media/jni/audioeffect/android_media_AudioEffect.cpp:28: error: expected namespace-name before ';' token
/home/gc/myandroid/frameworks/base/media/jni/audioeffect/android_media_AudioEffect.cpp:44: error: 'jclass' does not name a type
/home/gc/myandroid/frameworks/base/media/jni/audioeffect/android_media_AudioEffect.cpp:45: error: 'jmethodID' does not name a type
(중략..)
예측하기론 지금 헤더파일들이 하나도 연결이 되어있지 않은듯 합니다.
강제로 해당소스에 폴더를 생성하여 해더파일을 다 찾아서 넣어봤지만
기본적인 명령어들이 되지를 않습니다.
헤더파일들을 연결할 방법좀 알려주시면 감사하겠습니다;;
약한 지식으로나마 mk파일을 자세히 살펴봤지만 아무리해도 잘 안되서 질문드립니다.
2011.03.28 04:08:24
헤더 파일이 링크가 안되있다...는건 말이 안되구요...
1. gcc 컴파일러가 없다. 또는 다른 버전이 필요하다.
2. 다른 ndk가 필요하다. 다른버전이거나...
3. 필요한 라이브러리가 빠졌다. 추가적으로 설치해줘야 할게 있다거나...
1. gcc 컴파일러가 없다. 또는 다른 버전이 필요하다.
2. 다른 ndk가 필요하다. 다른버전이거나...
3. 필요한 라이브러리가 빠졌다. 추가적으로 설치해줘야 할게 있다거나...
2011.03.28 04:45:11
답변 정말 감사드립니다 ^^
저 어찌어찌하여 헤더파일 인식에러는 잡았는데 다음과 같은에러를 못잡고 있네요
이건 무슨문제일까요?ㅠ
/home/gc/myandroid/frameworks/base/media/jni/audioeffect/android_media_AudioEffect.cpp:320: undefined reference to `android::AudioEffect::AudioEffect(char const*, char const*, int, void (*)(int, void*, void*), void*, int, int)'
/home/gc/myandroid/frameworks/base/media/jni/audioeffect/android_media_AudioEffect.cpp:535: undefined reference to `__android_log_print'
저 어찌어찌하여 헤더파일 인식에러는 잡았는데 다음과 같은에러를 못잡고 있네요
이건 무슨문제일까요?ㅠ
/home/gc/myandroid/frameworks/base/media/jni/audioeffect/android_media_AudioEffect.cpp:320: undefined reference to `android::AudioEffect::AudioEffect(char const*, char const*, int, void (*)(int, void*, void*), void*, int, int)'
/home/gc/myandroid/frameworks/base/media/jni/audioeffect/android_media_AudioEffect.cpp:535: undefined reference to `__android_log_print'
2011.03.28 18:31:13
제가 추정하기에는 frameworks/base/include 디렉토리와 system/core/include 디렉토리가 필요할 것 같습니다.
왜냐하면 위 본문 내용의 첫번째 오류인 utils/Log.h 파일은 framworks/base/include/utils/Log.h 파일이고,
다시 이 파일이 system/core/include/cutils/log.h 파일을 include하고 이 파일은 다시 system/core/include/android/log.h 을 include 합니다. 바로 이 파일에 오류가 나는 __android_log_print 함수가 정의되어 있습니다.
어쨌든, 위 디렉토리들을 통째로 복사해도 되고 이미 포함된 소스를 활용해도 되지만
make 변수 LOCAL_C_INCLUDES 에 반드시 포함시켜야 할 것 같네요.
왜냐하면 위 본문 내용의 첫번째 오류인 utils/Log.h 파일은 framworks/base/include/utils/Log.h 파일이고,
다시 이 파일이 system/core/include/cutils/log.h 파일을 include하고 이 파일은 다시 system/core/include/android/log.h 을 include 합니다. 바로 이 파일에 오류가 나는 __android_log_print 함수가 정의되어 있습니다.
어쨌든, 위 디렉토리들을 통째로 복사해도 되고 이미 포함된 소스를 활용해도 되지만
make 변수 LOCAL_C_INCLUDES 에 반드시 포함시켜야 할 것 같네요.




LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
android_media_MediaPlayer.cpp \
android_media_MediaRecorder.cpp \
android_media_MediaScanner.cpp \
android_media_MediaMetadataRetriever.cpp \
android_media_ResampleInputStream.cpp \
android_media_MediaProfiles.cpp \
android_media_AmrInputStream.cpp
LOCAL_SHARED_LIBRARIES := \
libandroid_runtime \
libnativehelper \
libutils \
libbinder \
libmedia \
libskia \
libui \
libcutils \
libsurfaceflinger_client \
libstagefright \
libcamera_client \
LOCAL_STATIC_LIBRARIES :=
LOCAL_C_INCLUDES += \
external/tremor/Tremor \
frameworks/base/core/jni \
frameworks/base/media/libmedia \
frameworks/base/media/libstagefright/codecs/amrnb/enc/src \
frameworks/base/media/libstagefright/codecs/amrnb/common \
frameworks/base/media/libstagefright/codecs/amrnb/common/include \
$(PV_INCLUDES) \
$(JNI_H_INCLUDE) \
$(call include-path-for, corecg graphics)
LOCAL_CFLAGS +=
LOCAL_LDLIBS := -lpthread
LOCAL_MODULE:= libmedia_jni
꼭좀 답변 부탁드립니다 ㅠㅠ