본문 바로가기

L I N U X

OpenCV cross compile - arm


드디어 comple에 성공하였다 문제는 아래 부분에 글자를 제대로 써야된 다는 것이다
대소문자도 구분하고 processor 에는 나 보드에 맞는 것을 써야되는 것이였습니다.
내가 쓰는 개발 보는 Leopard dm365로 ARM926EJ-S 라고 작성해주어야되더군요
그리고 생기는 컴파일 오류는 오류 목록 보면서 하니깐 결국 make install 까지 무사히 되었네요 그래도 잘 모르고 하는 거라 좀 정리좀 해줄 필요가 있는 것같습니다.
  
-----------------------------------------------------------------------------------------
openCV 를 임베디드에 올리려고 하는데 자꾸 에러가 난다.
아직 성공 하지는 못했지만 참고할만한 사이트가 있어서 스크립을 해둔다 
스크립 되로 했음에도 불구하고 안되는 것보니깐 뭔가 더 알아봐야되겠다 성공하면 기념으로 다시 정리해서 포스팅해야되겠다 


http://liminia.tistory.com/62 



라이브러리 컴파일 방법#

컴파일 하기 위해 준비되어야할 패키지 설명은 생략하도록 합니다. (참고 - OpenCV Wiki Installation Guide(http://opencv.willowgarage.com/wiki/InstallGuide))

 

  1. OpenCV 소스파일을 다운로드 합니다.(http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.3/)
  2. 압축을 풉니다. ($ tar -xvf OpenCV-2.3.0.tar.bz2 )
  3. 압축 푼 디렉토리에 들어가서 새로운 폴더 (ex. release) 를 생성합니다.
  4. cmake-gui를 실행합니다. (다음과 같은 화면이 나올 겁니다.)
    ※ 만약 이렇게 빈 화면이 나오지 않고 뭔가 가득 채워져 있다면, [File] - [Delete Cache] 를 선택하여 내용을 지웁니다.


  5. Where is the source code: 부분에 이전에 OpenCV 소스코드를 풀었던 디렉토리를 선택합니다.
    Where to build the binaries: 부분에 결과물이 출력될 디렉토리를 선택합니다.
  6. Configure 버튼을 누릅니다. (다음과 같은 화면이 나올겁니다.)
    그러면 다음 화면과 같이 Unix Makefiles, Specify options for cross-compiling 옵션을 선택하고 [Next]를 누릅니다.

  7. 다음 화면이 나올 겁니다.
    그림과 같이 채워넣습니다. Operating System은 Linux (대소문자 구분)하여 입력 하고, Version과 Processor는 아무렇게나(비워도 무관) 넣어도 되는 것 같습니다.

  8. 그림과 같이 채워넣고 Finish를 선택하면 CMake가 뭔가 작업을 시작합니다. 그리고 다음과 같은 화면을 보여줍니다.
    작업을 끝내고 Configuration done 이라는 메시지가 출력되면 정상입니다.
    메시지 중에 빨간색 부분을 보고 수정 하든지, 무시하면(Cuda 설정 같은 필요없는 것들) 됩니다. 해당 항목에 마우스 갖다대면 간략한 설명도 나옵니다. 참고하세요.
    ※ Advanced를 클릭해주면 고급 설정부분도 나오니 참고하세요(근데 쓸 일은 없을듯).

  9. 중간에 빨간색 부분들을 체크하고, 수정할 것이 있으면 수정합니다. 대체로 수정할 부분은 다음과 같습니다.

    • CMAKE_INSTALL_PREFIX  -- make install 하면 설치될 디렉토리를 의미
    • WITH_로 시작되는 잡다한것 - cross compile의 목적인 임베디드에 사용할 것이라면 체크 해제해도 되는 것들이 많을 겁니다.
  10. 설정이 끝나면 Configure를 눌러줍니다. [Generate] 버튼이 활성화 될 때까지 몇 번 더 눌러 줍니다. 만약 [Generate] 버튼이 활성화되지 않으면, 중요한 설정 부분에서 뭔가 오류가 있다는 뜻이므로 좀 더 살펴 보고 수정합니다.
  11. [Generate] 버튼이 활성화 되었다면, 눌러줍니다. 위의 Where to build the binaries 에 입력한 디렉토리로 CMake 정보가 출력됩니다.
  12. 다 되었으면 터미널을 열어 출력된 디렉토리로 이동한 뒤

    1. $ make
    2. $ make install

(※ CMAKE_INSTALL_PREFIX 설정에 따라서 sudo 를 넣어 줘야 할 때가 있을 겁니다.)

 

Compiling an application based on OpenCV#

  • Application을 컴파일 하기 위해서 필요한 옵션들
    (생략해도 되는 것이 있을지도 모르는데 일단 다 적어 놨습니다.)
    (또 /OpenCV_arm 은 자기 설정대로 바꿔야 하는 걸 잊어버렸다면 걍 개발 접으세요.)

    • -I (include directory 옵션)

      • /OpenCV_arm/include
      • /OpenCV_arm/include/opencv
      • /OpenCV_arm/include/opencv2
    • -L (library directory 옵션)

      • /OpenCV_arm/lib
    • -l (library 옵션)

      • opencv_core
      • opencv_imgproc
      • opencv_highgui
      • opencv_ml
      • opencv_video
      • opencv_features2d
      • opencv_calib3d
      • opencv_objdetect
      • opencv_contrib
      • opencv_legacy
      • opencv_flann

 

Copy the libraries to target#

  • 당연하겠지만, 타겟에서 OpenCV based application 을 실행하려면 해당 shared library가 타겟에 있어야 합니다. 그래서 우리가 내 놓은 결과물에 lib디렉토리(/OpenCV_arm/lib)를 몽땅 복사해서 target에다 넣어 줍니다.(어디다 넣어두는지는 엿장수 맘대로)
  • 넣어 주면 /etc/ld.so.conf 파일 끝에다 복사해 넣은 라이브러리 디렉토리 경로를 넣어줍니다. 그러고 난 뒤에

    1. $ ldconfig

     

'L I N U X' 카테고리의 다른 글

라이브러리 로딩 - ld.so.conf  (0) 2012.02.22
compile option  (0) 2012.02.21
Installing OpenCV 2.1 in Ubuntu  (2) 2012.02.14
kernel module 생성하기  (0) 2012.02.13
모듈프로그램을 이용하여 리눅스 커널 분석하기(3)  (0) 2012.02.10