2011-09-29 5 views
1

OpenCV를 정적 라이브러리로 사용하고 싶습니다. 라이브러리를 정적 라이브러리로 컴파일 한 후 모든 종속성을 확인하기 위해 몇 가지 예제로 테스트하고 있습니다.OpenCV 정적 연결 오류

g++ -c -g -Wall -O2 `pkg-config --cflags opencv` formas.cpp 
g++ -g -Wall -O2 `pkg-config --cflags opencv` formas.o -o paint -static `pkg-config --libs opencv` -lpthread -ljpeg -ltiff -lz -ljasper -lpng12 
/usr/local/lib/libopencv_core.a(system.o): In function `cv::tempfile(char const*)': 
system.cpp:(.text._ZN2cv8tempfileEPKc+0x3a): warning: the use of `tmpnam' is dangerous, better use `mkstemp' 
/usr/local/lib/libopencv_core.a(system.o): In function `cv::getTickCount()': 
system.cpp:(.text._ZN2cv12getTickCountEv+0x2a): undefined reference to `clock_gettime' 
/usr/local/lib/libopencv_highgui.a(grfmt_png.o): In function `cv::PngDecoder::readHeader()': 
grfmt_png.cpp:(.text._ZN2cv10PngDecoder10readHeaderEv+0xde): undefined reference to `png_set_longjmp_fn' 
/usr/local/lib/libopencv_highgui.a(grfmt_png.o): In function `cv::PngEncoder::write(cv::Mat const&, std::vector<int, std::allocator<int> > const&)': 
grfmt_png.cpp:(.text._ZN2cv10PngEncoder5writeERKNS_3MatERKSt6vectorIiSaIiEE+0x134): undefined reference to `png_set_longjmp_fn' 
/usr/local/lib/libopencv_highgui.a(grfmt_png.o): In function `cv::PngDecoder::readData(cv::Mat&)': 
grfmt_png.cpp:(.text._ZN2cv10PngDecoder8readDataERNS_3MatE+0x141): undefined reference to `png_set_longjmp_fn' 
collect2: ld returned 1 exit status 
make: *** [all] Error 1 

내가 잘못 뭔가를하거나 거기에 오류 :

종속성은 -static PKG-설정이 OpenCV의에게 -lpthread -ljpeg -ltiff -lz -ljasper -lpng12

을 --libs 그러나 다음 오류 메시지를 얻을 수 있습니다 컴파일에 추가 OpenCV 라이브러리.

OpenCV 버전 : 2.3.1 (최신 버전) formas - 이미지를 만들고 그림을 그리며 몇 개의 그림을 그려 파일에 저장하는 예입니다. 아주 간단합니다.

미리 감사드립니다.

+0

오스 티아 (Ostia), 정확도가 높은 버스 기준 정확도 : P – Wiliam

답변

4

그것은 당신이 1.4 이상을 libpng를하지만 OpenCV의를 구성하는 데 사용했다 무엇 cmake 명령

1.2 libpng를 함께 연결 시도와 OpenCV의 컴파일 된 것 같다?

업데이트 :

당신은 당신이 clock_gettime 기능에 링크 라이브러리 목록에 -lrt를 추가해야합니다.