[참고]

https://github.com/charlyng/Embedded-Deep-Learning/blob/master/OpenCV/Jetson-TX1/Installation%20of%20opencv-3.1.0.md

https://www.jetsonhacks.com/2018/06/04/build-opencv-3-4-with-cuda-on-nvidia-jetson-tx1/



(Tx1 터미널 실행)

$pkg-config --modversion opencv  //openCv 기존 버전 확인

$sudo apt-get purge libopencv*   // 기존 버전 삭제


(기존의 설치된 패키지 업그레이드)

$sudo apt-get update

$sudo apt-get upgrade


(openCV Tx1에 빌드하기)

$git clone https://github.com/jetsonhacks/buildOpenCVTX1.git

$cd buildOpenCVTX1/

$./buildOpenCV.sh





[참고]

듀얼 부팅 - 윈도우 10 + 우분투 16.04

http://pythonkim.tistory.com/70

 

[멀티 부팅 할 때 윈도우만 켜지고 우분투를 선택하는 화면인 grub가 나오지 않는 현상 해결 방법]

https://inpages.tistory.com/92

- 윈도우

(1) 관리자 권한으로 명령프롬프트 실행

(2) bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi 

 

[참고]

1. http://webnautes.tistory.com/1030 (cmake 동작)

2. http://blog.neonkid.xyz/100

3. http://agiantmind.tistory.com/183  (cmake 동작)



  • 저는 1번 블로그님의 방법으로 진행하다가 아래와 같은 오류가 발생했어요. (이유를 모르겠어요ㅠㅠ) cmake를 사용하여 컴파일 할 때 ctrl+c 해서 붙여 넣기 하세요! 

[오류 발생]

modules/highgui/CMakeFiles/opencv_highgui.dir/build.make:62: 'modules/highgui/src/moc_window_QT.cxx' 타겟에 대한 명령이 실패했습니다

make[2]: *** [modules/highgui/src/moc_window_QT.cxx] 오류 1

CMakeFiles/Makefile2:4806: 'modules/highgui/CMakeFiles/opencv_highgui.dir/all' 타겟에 대한 명령이 실패했습니다

make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] 오류 2

Makefile:160: 'all' 타겟에 대한 명령이 실패했습니다

make: *** [all] 오류 2


  •  cmake 명령어의 path를 현재 본인 PC의 저장 위치로 변경하고 다시 시도

cmake -D CMAKE_BUILD_TYPE=RELEASE \

-D CMAKE_INSTALL_PREFIX=/usr/local \

-D WITH_TBB=OFF \

-D WITH_IPP=OFF \

-D WITH_1394=OFF \

-D BUILD_WITH_DEBUG_INFO=OFF \

-D BUILD_DOCS=OFF \

-D INSTALL_C_EXAMPLES=ON \

-D INSTALL_PYTHON_EXAMPLES=ON \

-D BUILD_EXAMPLES=OFF \

-D BUILD_TESTS=OFF \

-D BUILD_PERF_TESTS=OFF \

-D WITH_QT=ON \

-D WITH_OPENGL=ON \

-D OPENCV_EXTRA_MODULES_PATH=/home/keti/바탕화면/KETI/opencv/opencv_contrib-3.4.0/modules \

-D WITH_V4L=ON  \

-D WITH_FFMPEG=ON \

-D WITH_XINE=ON \

-D BUILD_NEW_PYTHON_SUPPORT=ON \

../


[오류발생]

modules/highgui/CMakeFiles/opencv_highgui.dir/build.make:62: 'modules/highgui/src/moc_window_QT.cxx' 타겟에 대한 명령이 실패했습니다

make[2]: *** [modules/highgui/src/moc_window_QT.cxx] 오류 1

CMakeFiles/Makefile2:4806: 'modules/highgui/CMakeFiles/opencv_highgui.dir/all' 타겟에 대한 명령이 실패했습니다

make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] 오류 2

Makefile:160: 'all' 타겟에 대한 명령이 실패했습니다

make: *** [all] 오류 2


  • qt 관련 오류 인가? 뭐지? 왜 안되지? (4시간 째 헤매는 중) . vmware(가상환경)이라서 문제가 발생한 듯 싶네요 ㅠㅠ
  • 우분투초보2018.05.28 09:41 신고

    답변을 빨리 못달아서 죄송합니다. 

    우선 작성자님 말씀대로 VMware 상에 우분투를 설치를 해서 진행 했습니다.

    빠른답변과 해결법을 주셔서 감사합니다.

    Visual Studio로 다시 해볼 생각 입니다.

    궁금해서 질문 한개더 드립니다.
    혹시 VMware상에 하면 안되는 이유가 무엇인가요? 내장 카메라만 안되는건지
    아니면 웹켐을 따로 사야하는건지.

  • webnautes webnautes2018.05.28 11:59 신고

    VMware가 물리적 하드웨어를 가상 머신에 설치된 우분투에서도 사용할 수 있게 해주지만..

    직접 피시에 설치한 우분투에서 동일한 하드웨어를 사용하는 것과 똑같이 동작하지 않는 경우가 있어서 그렇습니다.

    OpenCV를 사용한다면 처리 속도도 중요하기 때문에 상대적으로 느리게 동작할 수 밖에 없는 VMware는 피하는게 좋을 듯합니다.


  •   기타 궁금한 점 
koo2018.05.28 21:00 신고

덕분에 opencv 설치까지 모두 마쳤습니다. 마지막에 나오는 facedetect예제를 실행시키려는데 오류가 나타납니다.

./facedetect: error while loading shared libraries: libopencv_highgui.so.3.4: cannot open shared object file: No such file or directory

현재 제가 사용하고 있는 ARM보드가 Huins사의 I.MX6Q모델입니다. 카메라를 연결하였지만 오류는 여전히 나타났고 다른 예제들에도 같은 문구의 오류가 나타났습니다... 혹시 해결방법이 있는지 여쭤보고싶습니다.

그리고 opencv를 설치하는 과정이 porting(포팅)이라는 과정과 같은 것인지도 궁금합니다.
번거롭게 해드려서 죄송합니다...

  • webnautes webnautes2018.05.28 21:31 신고

    프로그램 실행시 라이브러리 파일을 찾지 못하는 것 같습니다.

    아래 링크에 나오는 설명처럼 진행해보세요..

    https://github.com/GaoHongchen/DIPDemo/issues/1

    포팅은 특정 플랫폼을 위해 작성된 소스 코드를 다른 플랫폼에서 동작하도록 하는 작업인듯 싶습니다.


    윈도우용 프로그램을 리눅스용 프로그램으로 변경하는 것도 포팅이라 볼 수도 있어서..

    OpenCV를 특정 보드에서 동작하도록 하는 것도 포팅이라 볼 수 있을 듯합니다.

    ARM 보드 쪽에선

    보통 부트로더 소스 코드나 리눅스 소스 코드를 특정 ARM 보드에서 동작시키기 위해 하드웨어 스펙에 맞추어 코드를 변경하는 경우를 포팅이라 보는 듯합니다.

    같은 ARM 시피유를 사용하더라도 보드를 만드는 업체에 따라 다른 하드웨어 구성으로 설계하기 때문입니다.


    이런 맥락에서 본다면 OpenCV를 우분투/데비안 계열 리눅스를 사용하는 플랫폼에서 컴파일 하는 경우에는 포팅이라 부르기 애매한 듯합니다.

    피시(인텔 CPU)든 라즈베리파이(ARM CPU)든 우분투/데비안 계열 리눅스상에서는 코드 수정없이 컴파일하면 되서라고 봅니다.

------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  • 결론 : 가상환경이 아닌 환경에서 다시 도전하기


[참고]



[ARM Cross compiler 설치]   2018.5.17자 블로그


  1.  64bit ARM, AARCH64 을 지원하는 gcc는 gcc-aarch64-linux-gun-*로 시작함
  2. $sudo apt install binutils-aarch64-linux-gnu gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
  3. $aarch64-linux-gun-gcc --version    // 설치 후 버전 확인
  4. 본인이 사용하는 에디터 실행
  5. main.c 작성
#include <stdio.h>

int main(void)
{
printf("Hello World!\n");
}

   6.  $aarch64-linux-gnu-gcc main.c -o main     //arm64 버전 실행파일 컴파일
   7.  $./main       // 우분투(네이티브환경)에서는 작동하지 않음. 타겟 보드에 실행해보기
   8.  $file main   // 컴파일된 정보 확인가능


[개발환경 구축 따라하기 1- Embedded Linux System.htm]

2008년 7월 3일자 게시물 


(한번도 뵌 적은 없지만 좋은 강의 해주신 장길석 스승님께 감사하며 오늘 하루를 보냅니다.)


1. (이미 만들어진) 임베디드 보드 -> Embedd Linux -> App 개발, 커널, 드라이버 소프트웨어를 개발함

2. Target board = 시스템을 적용하는 임베디드 보드를 말함

3. 필요한 것 : Linux (PC에서 많이 사용하는 i386(인텔 회사 칩셋))에서 개발 가능.

4. Linux에서 gcc로 컴파일하는 실행 파일을 임베디드 보드에 실행 시키려는게 목적. 여기를 Linux를 native compiler 라고 함.

5. Target board에서 실행용 파일이 되게끔 해주는 컴파일러를 cross-compiler 라고 함. (arm-linux-gcc)

6. 어떻게 개발하는것이 좋은지는 개발자마다 다름

7. 장길석 스승님 曰 : PC에 Linux를 독립적으로 설치하고, Linux에서 모든 작업을 한다. 이게 가장 좋은 방법이다. 그런데 아쉽게도 Linux에서 모든작업을 하기는 어렵더라. 예를들면 웹을 통한 자료검색, 친구와 메신저로 이야기를 나누고,  자료정리를 위한 워드 등을 Winodws에서 사용하기 때문. 에디터만 하더라도 vi 보다는 윈도우용 에디터가 능숙하기 때문에 리눅에서 작업하면 답답함. 그래서 윈도우에서 할 수 있는 것은 윈도우에서 하고, 컴파일, 디버그 등은 리눅스에서 작업함. PC 2대를 추천하나 여력이 안되면 PC 1대에 멀티부팅. 멀티부팅이 불편하면 가상머신을 활용함.

8. CygWin을 이용한 방법 : 윈도우에서 리눅스 환경을 사용 할 수 있는 프로그램. 하지만 실제로 완벽한 리눅스가 아니여서 fork(), 공유메모리를 작성하는 프로그램은 CgyWin에서 동작 안 함.

9. 임베디드 타겟보드는 리눅스 환경에 비하면 열악한 환경이기 때문에 개발자들이 gcc 보다는 arm-linux-gcc로 컴파일해서 target 보드에서 실행해보는 경우가 많다.

10. 발생하는 문제 : 타겟보드 상에서 실행 시 느려짐.

11. 출장가야하는 상황 : 노트북에서 CygWin을 이용해서 arm-linux-gcc를 컴파일한 것을 타겟보드에 실행해 볼 수 있음. 만약 나에게 실험해볼 타겟보드가 없다면 가상머신에서 컴파일해서 디버깅하는 것이 실험해 볼 수 있는 좋은 기회임.



'#GNU Arm Embedded Toolchain' 카테고리의 다른 글

#Ubuntu/Debian ARM Cross compile 환경  (0) 2018.08.11
GNU Arm Embedded Toolchain  (0) 2018.08.11

https://developer.arm.com/open-source/gnu-toolchain/gnu-rm


GNU Arm Embedded Toolchain

Arm Cortex-M 과 Arm Cortex-R 프로세서를 위한 Pro-build GNU toolchain    



GNU Arm 임베디드 툴체인은 Arm 임베디드 GCC 컴파일러, 그리고 Arm Cortex-M과 Cortex-R 프로세스 기반의 bare-metal 소프트웨어개발을 위한 다른 GNU 도구와의 특징을 담고 있는 통합되고 적합한 패키지이다.

툴체인은 마이크로소프트 Windows, 리눅스, 맥 OS X 호스트 동작 시스템에서 cross-compilation으로 이용가능하다.


이 툴체인은 무료 소프트웨어 재단(FSF) GNU Open source 도구와 newlib를 기반으로 한다.


지원 프로세서 : Cortex-M0, Cortex-M0+, Cortex-M3, Cortex-M4, Cortex-M7, Cortex-M23, Cortex-M33, Cortex-R4, Cortex-R5, Cortex-R7, Cortex-R8, Cortex-R52



[Linux 64-bit 환경설정]

1. 각 운영체제 환경에 맞는 압축파일 다운로드

2. #mv gcc-arm-none-eabi-7-xxxx.tar.bz2 /        //루트 폴더로 압축파일 이동

3. #cd /

4. #tar -xvf gcc-arm-none-eabi-7-xxxx.tar.bz2    // 확장자에 따른 루트폴더에 압축풀기

5. #apt install gcc-arm-none-eabi                   // 설치

6. #arm-none-eabi-gcc --version                    // 설치버전 확인

/*printf 형식 */

#include <stdio.h>

int main()

{

float a = 3.141592f;

double b = 3.141592;

int c = 123;


printf("a : %.2f \n", a);    // %.2f 는 %f랑 조금 다름. 무조건 소수점 이하 둘째 자리까지만 표시하라는 뜻

printf("c : %5d \n", c);    // .5가 아님을 주의! 되도록 5자리를 맞추라는 뜻. 반드시 지켜야 되는 경우 아님

printf("b : %6.3f \n", b);  //  6자리로 맞추되, 반드시 소수점 3째 자리까지만 표시하라는 뜻

return 0;

}


[결과]




[출처 : 이재범님의 '씹어먹는 C 언어']

1. C언어 공부. 이후 C++, 자바, 파이썬과 같은 고급언어를 사용하게 될지라도 C로 시작하는 걸 권장


2. 시스템 프로그래밍 공부. 프로그래밍에 발을 들여 놓는 사람들은 지루해 보이는 시스템은 뒷전으로 하고 고급 응용프로그램부터 시작하려고 한다. 멋져 보이는 3D 그래픽 엔진이나 게임 알고리즘부터 배워서 당장의 가시적 결과물에 의존한다. 실패를 통해서 스스로 느껴보는 것도 좋겠지만 닦여져 있는 길을 굳이 돌아서 갈 필요는 없다. 시스템을 공부해라.


3. 네트워크 프로그래밍을 공부


4. 네트워크를 공부하다 보면 시스템 프로그래밍이 중요함을 알게 됨. 시스템 프로그래밍을 깊이 공부하게 된다.


5. 직접 프로그램을 만들면서 고급 응용 프로그램을 공부. 동시에 그전에 대략 이해만 하고 넘어갔던 TCP/IP 네트워크 이론에 대해 공부한다.


[참고] TCP / IP 소켓 프로그래밍  저자 : 윤상배, 출판 : 한빛미디어

+ Recent posts