linux 에서 opencv static library 링크 어떻게 해서 컴파일하나요?
opencv를 이용해서 영상을 받고 있는데요 static library 를 이용하여 진행을 하려고 하는데 에러가 나네요
우선 shared library를 이용하여 컴파일 및 라이브영상 출력까지 진행 했습니다
CFLAGS = -lopencv_core -lopencv_highgui -lopencv_imgproc
$(CC) -o opencv_webcam opencv_webcam.c $(CFLAGS)
위에 처럼 Makefile을 만들어서 shared library를 이용하여 동작확인 까지 했습니다.
opencv 도 컴파일옵션에서 -DBUILD_SHARED_LIBS=OFF 사용하여 static library를 만들었는데요
libopencv_core.a libopencv_highgui.a libopencv_imgproc.a 파일을 소스파일경로로 복사를 했습니다.
여기서 Makefile을 어떻게 설정해야 할지 답이 안나오는데요
인터넷에서는 gcc -o opencv_webcam opencv_webcam.c `pkg-config --static --cflags --libs opencv` 이렇게 하라고하는데
컴파일해서 테스트를 해보니 실행파일에서 opencv 라이브러리를 필요로 하더라구요..
-static 옵션을 주어서
$(CC) -o opencv_webcam opencv_webcam.c -static $(CFLAGS) 컴파일 하면
....
utils.cpp:(.text._ZN2cv4PSNRERKNS_11_InputArrayES2_+0x5c1): undefined reference to `cv::Exception::~Exception()'
//usr/local/lib/libopencv_imgproc.a(utils.cpp.o): In function `cvCopyMakeBorder':
utils.cpp:(.text.cvCopyMakeBorder+0x41): undefined reference to `cv::cvarrToMat(void const*, bool, bool, int)'
utils.cpp:(.text.cvCopyMakeBorder+0x56): undefined reference to `cv::cvarrToMat(void const*, bool, bool, int)'
utils.cpp:(.text.cvCopyMakeBorder+0x12d): undefined reference to `cv::Exception::Exception(int, std::string const&, std::string const&, std::string const&, int)'
utils.cpp:(.text.cvCopyMakeBorder+0x135): undefined reference to `cv::error(cv::Exception const&)'
utils.cpp:(.text.cvCopyMakeBorder+0x13d): undefined reference to `cv::Exception::~Exception()'
utils.cpp:(.text.cvCopyMakeBorder+0x1be): undefined reference to `cv::_OutputArray::_OutputArray(cv::Mat&)'
utils.cpp:(.text.cvCopyMakeBorder+0x1ce): undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
utils.cpp:(.text.cvCopyMakeBorder+0x294): undefined reference to `cv::fastFree(void*)'
utils.cpp:(.text.cvCopyMakeBorder+0x32c): undefined reference to `cv::fastFree(void*)'
utils.cpp:(.text.cvCopyMakeBorder+0x34c): undefined reference to `cv::Mat::deallocate()'
utils.cpp:(.text.cvCopyMakeBorder+0x35c): undefined reference to `cv::Mat::deallocate()'
엄청난 에러가 나오는데요
linux(우분투)환경에서 opencv static library 링크 설정을 어떻게 해야하나요?
어려운 내용이네요.
도움이 되는 내용이 있다면... 되도록 잘 되어 있는 예제를 찾아서 사용하시기를 권장합니다.
- opencv 컴파일'로 네이버와 구글을 찾아봅니다.
- undefined reference to `cv::Exception::~Exception()''로 네이버와 구글에서 찾아봅니다.
- 네이버 책에서 OpenCV 관련 책을 찾아봅니다.
- 컴파일 되어 있는 예제를 네이버. 구글. 코드프로젝트. GitHub 등에서 구해봅니다.
- OpenCV 버전. OS. 컴파일러. 그래픽 카드 드라이버 등에 영향을 확인해봅니다.
- 리눅스라면. 자동 인스톨 방법을 확인해봅니다.
- static 컴파일을 할경우에 대한 라이센스'도 확인해봅니다. (Qt 는 static 컴파일을 할 경우. 500만원에 상용 비용을 지불해야 합니다.)
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
- static 컴파일을 할경우에 대한 라이센스'도
- static 컴파일을 할경우에 대한 라이센스'도 확인해봅니다. (Qt 는 static 컴파일을 할 경우. 500만원에 상용 비용을 지불해야 합니다.)
잘못된 정보를 전파하지 마십시오.
-
중복댓글 삭제
stand alone + closed source
http://stackoverflow.com/questions/2277165/qt-single-exe-with-lgp
http://www.korone.net/bbs/board.php?bo_table=qt_qna&wr_id=10982&sfl=wr_subject&stx=qt&sst=wr_good&sod=asc&sop=and&page=5
stand alone + closed source 일 경우 라이센스 비용 들고
최소 480부터 시작하는게 맞는 것 같습니다.
어디가 틀렸는지 명확히 따지고 비난해야 할 것 같습니다만?
그정도 가이드는 누구나할듯
그정도 가이드는 누구나할듯
이런 무의미한 익명의 댓글도 누구나 달 수 있죠.
이런 무의미한 익명의 댓글도 누구나 달 수 있죠.
댓글 달기