서적에 관한 질문 및 오류 등을 문의 할 수 있으며, 저자로부터 직접 답변을 받을 수 있습니다.
안녕하십니까?
<문의1>
안드로이드의 모든 것NDK (고현철,전호철 지음) 책을 보고, 43page의 상단 부분(Ant를 이용한 컴파일 부분)을 따라 해 보았습니다.
즉, 아래와 같이 책에 있는 명령어를 입력하니, error message가 발생합니다.
그 명령어와 message는 아래와 같습니다.
linuxjoa@linuxpc:~/ndk/android-ndk-r9/samples/hello-jni$ android update project -p, -s -t 9
android: command not found
아시겠지만, ‘android’라는 명령어(utility S/W)가 없다’는 의미입니다.
android라는 명령어(utility S/W)는 처음 접해 봅니다.
아무튼, 이 명령어를 install하기 위해서는 어떻게 해야 하나요 ?
만약, 위의 문제점이 아니라면, 어떻게 하면 해결할 수가 있는지요 ?
<문의2>
안드로이드의 모든 것NDK (고현철,전호철 지음) 책을 보고, 88 page 하단 부분(= 3.6. x86에서 JNI 실습)을 따라 해 보았습니다.
즉, 아래와 같이 책에 있는 명령어를 입력하니, error message가 발생합니다.
그 명령어와 message는 아래와 같습니다.
linuxjoa@linuxpc :~/jni_ex$ java kr.or.aesop.HelloWorld
Exception in thread "main" java.lang.UnsatisfiedLinkError: /home/linuxjoa/jni_ex/helloworld.so: /home/ linuxjoac/jni_ex/hello world.so: wrong ELF class: ELFCLASS64 (Possible cause: architecture word width mismatch)
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1803)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1699)
at java.lang.Runtime.load0(Runtime.java:770)
at java.lang.System.load(System.java:1003)
at kr.or.aesop.HelloWorld.<clinit>(HelloWorld.java:7)
Could not find the main class: kr.or.aesop.HelloWorld. Program will exit.
이 부분은 32BIT, 64BIT와 관련이 있는 것 같은데, 인터넷을 찾아서 나름대로 문제해결을 시도해 보았으나,
해결하지 못해서 도움을 요청드립니다.
1번 문제의 android 라는 것은
Android sdk 의 android 를 실행하게 되어 있습니다. 그래서 sdk 를 설치하고 android sdk를 설치하신 후 tools 디렉토리를 path에 등록해주시면 되겠습니다.
2번은 저도 처음 보는 문제라 검색을 좀 해봤는데
http://stackoverflow.com/questions/8991128/eclipse-jni-shared-library-architecture-word-width-mismatch-wrong-elf-class-un
사용중이신 JRE 와 gcc를 같은bit로 맞춰서 하시면 될것같네요.
gcc로 컴파일 하실때 '-m32' or '-m64' 옵션을 주면 됩니다. 두개 다 해보시면 하나는 돌아가지 않을까... 싶습니다.
이 문제에 대해서 제가 따로 테스트를 해보지는 못했습니다.