ubuntu에서 MATLAB을 설치했는데 java 관련 오류가 발생

이거 은근 골때린다. MATLAB R2016A를 설치 다 하고나서 실행을 하는데 MATLAB이 죽는다. 근데 이때 실행 안되는 것에 대한 답변으로 Octave를 쓰라는 답변 다는 것들 진짜 열심히 패고 싶었다만…

다행이도, 매틀랩은 친절해서 그런지 크래시 덤프를 남겨준다. 그걸 열어보니 참으로 어이없는 상황이 만들어졌다.

스크린샷_2016-06-29_15-26-54.png

Segmentation violation

…설치 하자마자 바로 첫 실행한 프로그램이 저러는 것에는 이유가 있을 것이라 생각했다. 그래서 일단 사실 확인을 위해 내용을 뒤져보니..

Virtual Machine     : Java 1.7.0_60-b19 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode

…저기요? java 1.8 쓰고 있는지가 몇년인데..?

사실 매틀랩은 자바 환경에서 GUI를 제공한다. 그래서 최소한 java 1.4 이상을 지원해 줘야 하는데, 시스템이 잘 지원 안해줄까봐 스스로도 자바 런타임을 가지고 있다. 근데 그게 꼬인거다.

stack trace도 도중에 잘렸지만, 불려진 바이너리의 위치가 매틀랩 내부에 있는 자바 런타임 코드랑 현재 돌아가는 window 시스템이랑 꼬인 내용들이 대부분이다.

그래서 일단 지금 내 우분투에 설치되어 있는 java의 jre 경로로 위치를 변경해 줘야겠다 싶었다.

스크린샷_2016-06-29_15-34-05

구동을 위해 필요한 것은 바로 위에 터미널에 경로에 있는 libjvm.so이다. 매틀랩은 저걸 못찾아서 Segmentation violation을 일으키는 것이었다.

나보다도 자바에 대해서 더 뛰고 날고 하는 사람들은 많겠지만… 저 파일에 대해서도 잠깐 적겠다.(내가 잊어버리지 않기 위해서) 저 파일은 Java Stored Procedure(자바 저장 프로시저)를 수행하기 위한 환경을 만들어주는 바이너리이다. 자바 개발자들 중에서 개발환경 설정할 때 경로 설정에 LD_LIBRARY_PATH를 설정해서 쓰는 분들 있는데 그 라이브러리에 들어있는 것이다. 경로는 운영체제, 아키텍쳐에 따라 다를 수 있지만 기본적으로는 [java home path]/jre/bin 경로에 있다.

그럼 저걸 어떻게 바꿔주느냐? 매틀랩 실행을 위한 경로로 들어가서 아래와 같이 MATLAB_JAVA 변수에 jre 경로를 입력하면 된다.

export MATLAB_JAVA=/usr/lib/jvm/java-8-oracle/jre

스크린샷_2016-06-29_15-43-40

그리고 나서 실행을 하면 제대로 실행되는 것을 확인할 수 있다.

스크린샷_2016-06-29_15-44-03

자바 기반의 GUI 환경에 익숙해지면 이런 것쯤이야 뭐 알아서 수정할 수 있겠지만… 난 그런 게 별로 없는 환경을 좋아해서 그런지 이거에 좀 삽질을 많이 했다.

Link+ IDE 사용 경험

(이 글은 워드프레스로 확인하여 주시기 바랍니다.)

Link+ IDE를 설치하고 나서 좀 사용해보았다. 메뉴얼의 양이 좀 상당히 많은 편이긴 한데, 이 메뉴얼 내용대로가 사실 리눅스 커널 프로그래밍에서 컴파일하고 설정하고 빌드하고 하는 여러 작업들을 다 가지고 있는 것이다보니 그렇게까지 어렵다고 생각하진 않았다.

뭐, 검색해보신 분들은 다 갖고 있겠지만, 최신판 메뉴얼을 확인해 보면 은근 양이 많아도 금방 따라할 수 있는 수준이다.

게다가 흔히 쓰는 배포판들의 경우에는 구성하기도 편하다. 우분투는 apt-get 명령어 몇 줄 입력해서 필요한 패키지 다 설치하고 하면 pre-install은 끝나는 수준. ㅡㅅㅡ

Screenshot - 2016년 03월 31일 - 16시 10분 05초

위의 화면은 분석하고 있는 리눅스 4.1.20 lts 커널을 열어서 qemu에 연동되어 시뮬레이팅하는 중이다. 디버깅도 되고, 시스템 콜 테스트도 가능한 거 같아서 좀 더 확인해서 보고 있다.

이런 게 있었으면 좀 더 빨리 할 수 있으려나…ㅠㅠ 안쓰신 분들 있으면 써보라고 하고 싶군요.