2012-10-28 3 views
3

내 프로젝트에서 JPEG 처리 기능이 필요하므로 일반적으로 만든 패키지를 다운로드 한 후 jpeg-8d 라이브러리를 사용하기로 결정했습니다. ./configure; make and make install. make test은 오류를 반환하지 않으며 전체 프로세스 중에 아무런 문제도보고되지 않았지만 코드 블록 10.05에서 example.c을 열었을 때 컴파일이 실패했습니다. 디렉토리 섹션에 /usr/local/lib/libjpeg.a /usr/local/lib/libjpeg.so 도 추가 따라 디렉토리 : 나는 몇 가지 솔루션을 "인터넷 검색"과 jpeglib.h 파일에서
jpeg-8d 라이브러리의 링크 (또는 올바른 설치 및 링크)

#ifdef __cplusplus 
extern "C" { 
#endif 
... 
#ifdef __cplusplus 
} 
#endif 

을 추가, 재 컴파일 한 후, 코드 블록의 섹션을 링커에이 라인을 추가했다. 하지만 컴파일러는 여전히 example.c를 컴파일에 실패, 여기에 몇 가지 오류입니다 :

> /home/raff/CodeBlocks/jpeg-8d/example.c|116|warning: incompatible implicit declaration of built-in function ‘exit’| 
> example.c|| undefined reference to 'image_width' 
> example.c|| undefined reference to 'image_height' 

누군가가 성공적으로 설치 및 사용 JPEG 라이브러리 도와주세요 경우에, 나는 IDE 및/또는 리눅스 배포판 전환에 아무런 문제가 없다.

답변

1

귀하의 소 instalation는

파일 example.c이 문서의 일부, 코드 컴파일하고 사용 할 수 없습니다 있어야하는데 (그렇지 않으면 컴파일시 jpeglib.h 누락에 대해 불평 것) 잘 될 것 같다. 예를 들어, main()은 없습니다. jpeg 파일 압축 및 압축 해제 방법을 코딩하는 방법에 대한 참조로 사용해야합니다.

변수 image_widthimage_height (및 image_buffer)은 extern으로 선언되므로 다른 파일에 정의 된 것으로 간주됩니다. 이러한 변수를 정의하고 버퍼를 채우는 프로그램을 작성하면 제공된 방법 (write_JPEG_fileread_JPEG_file)을 사용할 수 있습니다.

0
  1. 정적 또는 공유 라이브러리에 연결 하시겠습니까?
  2. 고정적 인 경우 뒤에 링커의 명령 줄에 을 삽입합니까?
  3. 공유하고 최신 툴체인을 사용하는 경우 문제가 될 수 있습니다.
  4. 제대로 연결하면 readelf -s가 공유 라이브러리에 표시되는 내용은 무엇입니까? 정적 라이브러리에서 nm은 무엇을 보여줍니까? 라이브러리의
0

나는 example.c가 사실이 라이브러리를 사용하여 예제의 내용을 확인하지 않았 음을 확신했다. 더욱 더 문제가있었습니다. 적절한 프로그램을 작성 후 I`ve 오류가 발생했습니다

error while loading shared libraries libjpeg.so.8: cannot open shared object file: No such file or directory 

을하지만 이것은 쉘 명령이 쌍에 의해 수정되었습니다 :이 도움이

ranlib /usr/local/lib/libjpeg.a 
ldconfig /usr/local/lib 

희망을.