서적에 관한 질문 및 오류 등을 문의 할 수 있으며, 저자로부터 직접 답변을 받을 수 있습니다.
dickinabox@ubuntu:~/study/ndk$ java kr.or.aesop.HelloWorld
AA
Exception in thread "main" java.lang.UnsatisfiedLinkError: kr.or.aesop.HelloWorld.show1()V
at kr.or.aesop.HelloWorld.show1(Native Method)
at kr.or.aesop.HelloWorld.main(HelloWorld.java:16)
이런 에러가 발생합니다 아무리찾아도 오타는아닌거같아요
환경은 우분투 12.04 입니다
그리고 88쪽에 .o 파일을 .so 파일로 만들기위해 컴파일을하면
dickinabox@ubuntu:~/study/ndk$ gcc -shared -WI, -soname helloworld.so -o helloworld.so helloworld.o
gcc: error: helloworld.so: No such file or directory
gcc: error: unrecognized option ‘-soname’
라구 발생하네요
dickinabox@ubuntu:~/study/ndk$ java kr.or.aesop.HelloWorld
AA
Exception in thread "main" java.lang.UnsatisfiedLinkError: kr.or.aesop.HelloWorld.show1()V
at kr.or.aesop.HelloWorld.show1(Native Method)
at kr.or.aesop.HelloWorld.main(HelloWorld.java:16)
에러는 로딩할 라이브러리 즉 여기에선 libHelloWorld.so 파일이 되겠지요 이게 잘못된 것이 이유로 보입니다.
그러니까
dickinabox@ubuntu:~/study/ndk$ gcc -shared -WI, -soname helloworld.so -o helloworld.so helloworld.o
gcc: error: helloworld.so: No such file or directory
gcc: error: unrecognized option ‘-soname’
이부분에서 so 파일 생성이 안되었기 때문인거죠
명령어를 잘못 사용하셨는데 아래와 같이 쓰셔야 합니다.
gcc -shared -Wl,-soname,HelloWorld.so -o libHelloWorld.so HelloWorld.o
자바에서 라이브러리 로딩시에 대소문자 구분하기 때문에 so 파일 이름을 자바에서 설정하신대로 같게 잡아주시면 되구요. gcc 명령어는 띄어쓰기도 유의해서 적어주세요~