마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

앱실행시 바로죽어버립니다. ndk를 바꾸라는거같아요.

0 추천

http://friday13th.tistory.com/category/cocos2d-x 참고...

 

위사이트처럼  저도cocos2d-x를 사용중입니다. 다른 디바이스는 잘되는데 최신 단말에서는 죽어버리네요 시작하자마자 ...

Cannot load library: soinfo_relocate(linker.cpp:976): cannot locate symbol "__exidx_end" referenced by "libcocosdenshion.so"...

에러로그를 내면서 죽어버립니다.

 

ndk를 CrystaX사용중인데 구글ndk로 바꾸면 된다고합니다.  구글ndk와 안드로이드 사이트에서 받는 ndk랑 다른건가요 ? 같은건가 ... ?  바꾸려면 어떻게 해야하는지 ,,, 맨처음 ndk설치할때처럼 이미 시그윈은 설치되어있으니 ndk만 다운받아서  경로 설정해주면 되는건가요 ?

 

그리고 ndk들마다의 차이점이 뭔가 궁금하네요 CraystaX와 구글ndk의 차이점이 뭐길래 이러는건지도 ...에휴 멍청 하니까 답답하네요 

 

안드로이드로이으잉 (1,560 포인트) 님이 2013년 9월 12일 질문
안드로이드로이으잉님이 2013년 9월 12일 수정

1개의 답변

+1 추천
 
채택된 답변

NDK 도 버젼이 있습니다.

최신 버젼은 Android NDK, Revision 9 (July 2013) 이며

Android NDK, Revision 8b 부터 libc에서  해당 라이브러리가 빠졌다고 합니다.
Fixed libc.so to stop incorrectly exporting the __exidx_start and __exidx_end symbols.
 
따라서 Android NDK, Revision 8b 이전 버젼을 받아 NDK 경로를 Android NDK, Revision 8b 이전 버젼이 설치된 경로로 변경하여  컴파일 하던지. make 파일에 
 
LOCAL_LDLIBS += -fuse-ld=bfd
를 추가해야 할 듯 합니다.
 
자세한건 아래래 URL을 참조하세요
사악미소 (65,330 포인트) 님이 2013년 9월 12일 답변
안드로이드로이으잉님이 2013년 9월 12일 채택됨
방법이 두가지인가요 ? 새로받던가 make파일에 추가하거나  우선 메이크 파일에 추가해보고싶네요 이게 훨씬 간단해 보이기는하는데 ,..

revision 8b부터 libc에서 해당라이브러리가빠졌다고 합니다. 라고하셨는데
해당라이브러리라는건 제 로그에있는 libcocosdenshion.so  이것말씀이신가요 ?

방금전엔 game.so였는데 제가 잘못썼네요  libcocosdenshion.so입니다...

훔...그렇다면 안드로이드사이트에가서 revision 8b이전의 ndk를 새로받아서 경로설정을한다음 하면된다는말씀이시지요 ?  한번해보겠습니다!
네 revision 8b 이전을 사용하시면 될 듯 합니다.
단지 추후 버젼의 호환성을 위해서는 가급적 최신 버젼을 사용하시고 LDFLAG 옵션을 추가하는게 좋을 듯 합니다.
그리고 libc는 libc.so를 의미하며 NDK 에 있는 라이브러리로 기본적인 stdio.h, string.h 등의 c 기본 함수가 들어있는 라이브러리입니다.
아 !그렇군요 감사합니다.   질문이있습니다.
make파일이란것이... 제가받은 ndk파일내에있는 GNUmakefile말씀이신가요 ?
make파일에 LOCAL_LDL...을 추가하려했는데
하는방법을 모르겠습니다. ㅠㅠ

사악미소님의 경우라면  두가지방법중 어느방법을 택하시겠나요 ?
NDK 버젼관리도 힘들기 때문에  저라면 LDFLAGS를 넣을 겁니다. 단지 이것도 버젼을 탈수 있을 듯 해서 문제지만요..=ㅇ=;;
아무튼
LOCAL_LDLIBS += -fuse-ld=bfd 는  Anroid.mk 로 빌드할 때 애기이고
 GNUmakefile로 만드셨다면 GNUmakefile 에 LDFLAGS 추가하는 부분이 있을 테니 거기에 -fuse-ld=bfd  를 추가해 주셔야 할 겁니다.
이 부분은  make 파일에 따라 다르기 때문에 정확한 답변을 드리기 힘듭니다.
현재 ndk최신버전말고 8b이전버전을 받으려면어떻게받아야하죠 ??
...