JNI 만드는 중입니다. so 파일 관련해서 문제가 있네요
안녕하세요 jni 초보입니다.
지금 amd64 칩을 사용하는 리눅스 서버(redhat as)에서 개발중데요
예전에 했던 방식대로 so 파일을 만들면 이런식으로 에러가나오
네요
예전: gcc -shared -I/경로 -o libtest.so test.c
에러: /usr/bin/ld: /tmp/ccQNfABM.o: relocation R_X86_64_32 can not be used when making a shared object; recompile with -fPIC
/tmp/ccQNfABM.o: could not read symbols: Bad value
collect2: ld returned 1 exit status
그래서 -fPIC로 붙여서 만들긴 만들었습니다.
그런데 문제가 ....... java 프로그램이 so 파일을 읽지를 못하네요
에러가 다음과 같이 나오네요
Java 클래스를 로드할 수 없습니다. java.lang.UnsatisfiedLinkError: /data/test/jni2/libtest.so: /data/test/jni2/libtest.so: :g ; 4: =
이렇게 나옵니다. 하아~~ LD_LIBRARY_PATH 에다가 경로도
걸어주고 했는데 다른거 생각해 볼게 또 뭐있을까요??
참고로 JNI 소스는 이전에 솔라리스에서 테스트 했던 내용입니다.
읽어보시고 뭔가 생각나시는 분계시면 아무거나 라도 좋으니
조금이라도 적어주시면 감사하겠습니다.
[code:1]Java 클래스를 로드할 수 없습니다. java.lan
JNI의 경우 UnsatisfiedLinkError 는 JNI를 이용하여
자바에서 사용하는 라이브러리를 찾지 못할 때 발생하는 에러입니다.
님의 경우는 라이브러리 생성부터 문제가 있는 것 같기는 하지만..
우선 또 다른 가능성부터 몇가지 살펴보면요...
- 자바소스의 패키지 설정이 적절한지 한번보세요..
만약 패키지가 설정이 되었다면 패키지 조절을 하세요..
- 자바소스에서 System.loadLibrary("라이브러리 이름");
이부분에서 로딩하고자 하는 라이브러리 이름이 실제 로딩하고
자 하는 라이브러리 이름하고 틀린경우 발생할 가능성이
있습니 다.
음 먼저 위의 두가지 사항을 먼저 살펴보심이.. 그럼 수고
댓글 달기