hpux 에서 JNI 작성 해 보신분 계신가요?
글쓴이: greenuri / 작성시간: 금, 2010/02/12 - 3:43오후
가입 한지 꽤 됐는데 이제야 글을 하나 올리네요 ^^
자연어처리 모듈을 개발하는 개발자입니다.
회사 일 때문에 HPUX에 자연어 처리 패키지를 개발 해야하는데요..
저희 회사 제품이 제가 작성하는 모듈만 빼고 전부다 자바 라서
당연히 제 모듈은 JNI를 이용합니다.
이때까지 윈도우, 유닉스, 리눅스 다 잘 됐는데 HPUX만 유독 안되네요..
증상은 다음과 같습니다.
java에서 제 모듈을 호출 하면
construct of XXX <- JNI Java에서 찍어 주는 메세지.
Loading Dictionary... <- C 모듈에서 찍어주는 인트로 메세지..
aCC runtime : Use of "-mt" must be consistent during both compilation and linking.
Module Trace Message 1..
Module Trace Message 2...
JVM receive a signal UNKNOWN(6)
JVM process is gone.
JVM exited unexpectedly.
이런식으로 되네요..
wrapper란 프로그램으로 자바를 실행 시켰고요
wrapper : ELF64 IA64 입니다.
제 모듈도 : ELF64 IA64 이고요
제 모듈에서 printf 함수는 정상 동작 하는데
std::cout은 정상적으로 동작이 안되는것으로 생각 되는데요..
어떻게 해야 하나요?
Forums:
aCC로 컴파일 하셨나요?
HP-UX가 좀 그지(?) 같죠... ^^;;;;
HP-UX에서 JNI를 사용하는 경우에는 C++ 링크되는 라이브러리를 명시적으로 정해줘야 합니다.
아마도 cout쪽에서 문제가 생긴다면, so 만드실때, -lstd_v2를 링크해 주시면 될 것 같습니다.
HP-UX의 버전을 알면 좀 더 정확한 답변을 드릴 수 있을 것 같은데...
아래 링크를 참조하시면 도움이 될 듯 합니다.
http://docs.hp.com/en/JAVAPROGUIDE/JNI_java2.html#supportC++
버젼 정보 첨부 합니다.
JAVA : 1.5
path : /opt/java1.5
GCC : gcc 4.1.2
path /opt/hp-gcc-4.1.2/
gcc 링커 컴파일 할때 -L/opt/hp-gcc-4.1.2/lib/hpux64 첨부 시켰습니다.
From 卍海
From 卍海
OS의 버전 정보는 없나요?
HP-UX의 버전과 CPU 모델에 따라서 옵션이 조금씩 다르더라고요.. ㅜ.ㅜ
어째튼 위 링크를 참조하시면 웬만해서는 문제 해결하실 듯 합니다.
(저는 32비트만 해본지라...)
HPUX 버젼 정보 입니다
HPUX 11.23 이고요..
HPUX ia64 입니다.
그거 말고는 제가 리눅스 맹인이라서 모르겠네요..
다만 gcc가 세개 깔려 있다는건 알겠네요..
기본 gcc,
gcc 4.1.2
gcc 4.4.3 이렇게 깔려 있네요..
From 卍海
From 卍海
GCC와는 상성이 잘 안맞더군요...
제가 사용하는 HP-UX와 같은거네요.
저도 STL쪽에서 문제가 생겨서 안됬었는데,
GCC로 해서 안되는거, aCC로 하니까 되더군요... ㅡ.ㅡ;;;;;
기왕이면, GCC말고 aCC로 해보세요.
aCC runtime : Use of "-mt" must be consistent during both compilation and linking.
위 메시지는 so 컴파일과 링크시 -mt 옵션을 주라는 얘기입니다.
aCC에서 -mt는 멀티스레드 관련 헤더와 so를 연결해 줍니다.
해결 했습니다.^^
감사합니다.
님 덕분에 acc로 컴파일러 바꿔서 옵션 맞춰서 컴파일 싹다 다시하고 하니
정상 동작합니다.
그런데 왜 HPUX는 GCC랑 뭔가 좀 안 맞는지.. 까탈스럽네요.. .쩝
From 卍海
From 卍海
댓글 달기