jpeg lib의 setjmp(jerr.setjmp_buffer) 실행 오류

임베디드 리눅스 보드에서 이미지를 출력하기 위해 jpeg 라이브러리를 사용해서 실행 파일을 만들었지만, 실행 중에 에러가 발생하네요. 에러가 발생한 위치는 setjmp(jerr.setjmp_buffer)인데, 인터넷에 공개된 jpeg 라이브러리를 사용하는 것이어서 어떤 문제인지 알 수 없어 답답했습니다.

http://www.ijg.org에서 구한 jpeg 라이브러리인데, 몇 년 전부터 잘 사용해 왔습니다. 예전 프로젝트와 차이라면 새로운 프로세서에 맞추어 크로스 컴파일러를 바꾸었다는 점입니다. 컴파일러를 바꾸었다고 잘 사용하던 라이브러리를 못 사용한다는 것은 말이 안 되는데.

jpeg lib의 setjmp(jerr.setjmp_buffer)

▲ 여하튼 갑작스런 실행 에러에 당황했습니다. 더욱이 어떻게 문제를 잡아야 좋을지 몰라서 난감했는데, 구글 신에게 여쭈어도 해결 방법을 찾지 못하겠네요.

jpeg library setjmp(jerr.setjmp_buffer) error

http://www.ijg.org을 방문하니 2016년 1월 17일에 올라온 새 버전인 jpegsrc.v9b.tar.gz가 올라왔군요. 지금껏 사용한 라이브러리는 jpegsrc.v9a.tar.gz 입니다. 그래서 혹시나 기대하면서 새 버전 jpegsrc.v9b.tar.gz을 사용했지만, 역시나 같은 곳에서 에러가 발생합니다.

그러나 다행히도 동료 덕분에 문제를 해결했습니다. 방법은 이렇습니다. http://www.ijg.org에서 최근 버전의 jpeg 라이브러리를 사용하는 것까지는 맞습니다. 단, 이전 버전의 jpeg 라이브러리를 사용하면서 jconfig.h, jerror.h, jmorecfg.h, jpeglib.h가 남아있다면 제거해야 합니다. 4개의 헤더 파일을 제거하고 컴파일하니 아무 이상 없이 실행되네요. 저와 상황이 다를 수 있으니 꼭 파일을 백업하시고 제거하세요.

헤더 파일을 없애면 컴파일 중에 파일을 찾을 수 없다고 에러가 날 것 같은데, 재미있게도 헤더 파일을 제거하고 컴파일하니 setjmp()에서 걸렸던 에러가 없어졌습니다. 아마도 헤더 파일 존재를 확인하고 라이브러리 버전을 확인하는 것 같습니다. 문제가 해결되어 다행입니다.

● 바다야크 추천 글
신고
Name
Password
Homepage Secret