관리 메뉴

악보쓰는 프로그래머

라즈베리파이 개발환경 꾸미기 #8. Eclipse + C/C++로 라즈베리파이 개발하기 본문

Programming/IoT_Embedded

라즈베리파이 개발환경 꾸미기 #8. Eclipse + C/C++로 라즈베리파이 개발하기

dltpdn@gmail.com 이세우 2016.05.10 11:43
이 포스트는 라즈베리파이 개발환경 꾸미기를 주제로 아래와 같은 시리즈 연재로 이루어 집니다.

  1. 라즈비안 OS 설치하기
  2. 키보드 모니터 없이 라즈베리파이 Login 하기
  3. Wifi 설정 / 기본 설정하기
  4. 파이썬 + Eclipse로 라즈베리파이 개발하기
  5. 라즈베리파이에 NodeJs 설치하기
  6. NodeJs + Eclipse로 라즈베리파이 개발하기
  7. C/C++ Cross Compiler(Tool Chain) 설치하기
  8. >> Eclipse + C/C++ 로 라즈베리파이 개발하기 <<


이번 포스트에서는 앞서 설치한 C언어 개발환경을 이클립스로 사용할 수 있게 만들어 보겠습니다.

C/C++ 언어는 이전에 살펴본 파이썬이나 NodeJs와는 달리 컴파일 언어이기 때문에 파이썬이나 노드제이에스에서
처럼 단순히 작성한 코드를 라즈베리파이에 손쉽게 업로드하는 것만이 아니라, 크로스 컴파일러에 의해 
빌드된 결과물을 업로드 시켜야 해서 좀 더 의미있는 작업이라 할 수 있겠습니다.

우선 개발 PC에 이클립스를 설치해야 합니다.
이클립스는 이전 포스트에서 설치한 것 처럼 이미 설치가 되어 있을 수 도 있고,
처음 설치해서 사용하는 경우도 있을 겁니다.

이클립스를 아직 설치하지 않은 경우에는 이클립스 배포판 중에 “Eclipse IDE for C/C++ Developers”를
받으시면 됩니다.



만약 이클립스를 이전에 설치해서 사용하고 있는 경우에는 이클립스 메뉴 “Help > Install New Software”를 이용해서 CDT 플러그인을 설치합니다.

Add 버튼을 눌러서 새로운 Repository를 추가합니닫.

Update Repository Site URL : http://download.eclipse.org/tools/cdt/releases/8.8.1


CDT 플러그인 Repository 사이트 URL은 아래 URL에 웹 브라우저로 접속하면, 현재 본인이 사용하는 이클립스 버전에 맞는 것을 구할 수 있습니다.


설치할 수 있는 Feature 목록이 뜨면 "CDT Main Features”와 “CDT Optional Features”를 선택하고, “CDT Preview Features”는 선택하지 않습니다.
모두 선택해서 설치해도 문제 될것은 없지만, “CDT Preview Features”는 아두이노 개발 환경인데, Preview 이라서 그런지 아직 원활히 사용하기 좋지 않고
쓸데없이 큰 아이콘이 나타나서 화면도 보기 좋지 않습니다. 


설치를 마치면 이클립스는 재시작 될것이구요, 재시작 후에 퍼스펙티브를 C/C++로 바꾸어 줍니다.

왼쪽 Project Explorer에서 오른쪽 마우스 클릭해서 “C Project”를 생성합니다.



프로젝트 이름을 적절히 지정하고 Project Type 은 “Hello World ANSI C Project”를 선택하고,
오른쪽 항목에서 Toolchains는 “Cross GCC”를 선택합니다.


그 다음에 나오는 Basic Settings는 적절히 입력해도 되고 안해도 그만입니다.



Select Configurations는 “Debug”와 “Release” 모두 선택된 그대로 두고 다음으로 넘어 갑니다.


그 다음이 Cross GCC Command 설정창 인데요, 여기가 제일 중요합니다.

이전 포스트에서 다루었던 GCC Cross ToolChain 설치한 경로와 GCC 컴파일러 Prefix를 지정하는 것인데요.
윈도우즈의 경우는 "C:\sysGCC\Raspberry\bin”에 설치하였고, GCC 컴파일러는 "arm-linux-gnueabihf-gcc” 였습니다.
이때 gcc 앞 부분을 Prefix라고 합니다. 그러니까, prefix는 "arm-linux-gnueabihf-“입니다.

맥OS의 경우는 "/usr/local/linaro/arm-linux-gnueabihf-raspbian/bin/“에 설치했고,
GCC 컴파일러는 "arm-linux-gnueabihf-gcc” 였습니다.
그러니까 prefix는 "arm-linux-gnueabihf-“ 입니다.


사용하는 운영체제와 설치한 툴체인에 맞게 prefix와 path를 지정하면 됩니다.
저는 맥OS를 기준으로 지정했습니다.

프로젝트 생성이 끝나면 “Hello World”를 출력하는 기본 코드가 자동으로 완성됩니다.


빌드를 위해서 “Project > Build Project” 또는 툴바에서 망치모양 아이콘을 누릅니다.


빌드가 완료되고 나면 Project Explorer의 프로젝트에 Debug 항목이 생기고 그 안에 빌드된 결과 파일이 생성된 것을 볼 수 있습니다.

이 결과 파일을 라즈베리파이에 업로드해서 실행하면 되는데, 이전에 알아본  SCP 또는 WinSCP 를 이용해도 되고,
이클립스의 Remote System Explorer를 이용해도 됩니다만, 좀 더 쉬운 방법으로 해보겠습니다.
업로드해서 실행하는 2단계를 한번에 해결할 수 있는 방법을 알아 보겠습니다.

이전 포스트에서도 다뤘던 Remote System 등록하는 것입니다.
이미 라즈베리파이가 등록되어 있다면 이 단계는 넘어 가도 됩니다.




리모트 시스템으로 등록되었다면 다시 C 프로젝트로 돌아와서 프로젝트를 선택하고 오른쪽 마우스 클릭해서 “Run As >  Run Configurations”를 선택합니다.


Run Configurations 화면에서 “C/C++ Remote Application”항목을 선택하고 “new” 버튼을 클릭합니다.



그러면 오른쪽 화면이 달라지는데, Remote Absolute File Path 부분에 이 프로젝트 결과 파일을 실행하기 위해 업로드할 위치를 지정합니다.
Browse 버튼을 누르면 창을 뜨는데, Connection 부분에서 등록한 라즈베리파이를 선택하고 하단에서 실행을 위해 업로드할 경로를 지정합니다.
필요에 따라 오른쪽 마우스를 클릭해서 새로운 디렉토리를 생성할 수 도 있습니다.



라즈베리파이에 업로드해서 실행할 경로를 지정하고나서 그 하위경로에 실행할 파일 이름을 직접 작성해서 완성합니다.
그리고 그 아래 항목 즉 “Commands to execute before application”  부분은 실행전에 해야 할 명령어를 입력하는 곳인데,
이전 포스트에서 살펴본 것 처럼 실행권한이 없기 때문에 “chmod 744”로 실행 권한을 주는 명령어를 입력했습니다.


끝으로 Run 버튼을 누르면 이클립스가 지정된 경로에 업로드하고 실행까지 한 뒤에 그 결과 화면을 아래쪽 console view에 보여 주는 것을 볼 수 있습니다.



이 방법에 단점이 있다면, 라즈베리파이의 GPIO를 접근하기 위한 어플리케이션을 작성한 경우 그 파일의 실행에 sudo 권한을 필요로 하는 경우가 있는데,
이 때에는 이 방법으로 하면 실행에 오류가 나서 결과를 볼 수 가 없습니다. 하는 수 없이 SSH로 접속해서 직접 실행하고 그 결과를 봐야 합니다.
혹시, 이 문제를 해결할 수 있는 방법을 아시면 댓글 부탁 드립니다.

이것으로 라즈베리파이에 파이썬, NodeJs, C/C++ 언어를 가지고 Eclipse로 개발환경을 꾸미는 내용의 연재를 모두 마쳤습니다.

향후에는 GPIO, UART 등의 하드웨어 연결에 대한 방법과 홈 오토메이션 프로젝트에 필요한 개별 내용을 다뤄 보도록 하겠습니다.


이 포스트는 라즈베리파이 개발환경 꾸미기를 주제로 아래와 같은 시리즈 연재로 이루어 집니다.

  1. 라즈비안 OS 설치하기
  2. 키보드 모니터 없이 라즈베리파이 Login 하기
  3. Wifi 설정 / 기본 설정하기
  4. 파이썬 + Eclipse로 라즈베리파이 개발하기
  5. 라즈베리파이에 NodeJs 설치하기
  6. NodeJs + Eclipse로 라즈베리파이 개발하기
  7. C/C++ Cross Compiler(Tool Chain) 설치하기
  8. >> Eclipse + C/C++ 로 라즈베리파이 개발하기 <<




저작자 표시 비영리 변경 금지
신고
12 Comments
  • 프로필사진 초보자 2017.02.07 10:36 신고 정말 많이 배워갑니다! 덕분에 빌드 성공했어요 ㅎㅎ
  • 프로필사진 Favicon of http://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2017.02.24 14:18 신고 도움이 되셨다니 저도 기쁩니다.
  • 프로필사진 Favicon of http://mookseong.tistory.com BlogIcon Mookseong 2017.03.02 22:38 신고 안녕하세요 요즘 라즈베리파이에 관심이 많아서 찾다가 라즈베리파이를 개발을 해보려고하는데요
    java개발은 많이 힘들까요?
  • 프로필사진 Favicon of http://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2017.03.15 20:19 신고 Java 개발이 힘든지를 물으시는 건지, 라즈베리파이를 Java로 개발하는것이 힘든지를 물으시는 건지 좀 헷갈리네요.

    Java 개발이 힘든지는 모든 개발은 힘들지만 재밌다고 말씀 드리구요. 그것이 Java라서 더 힘들지는 않습니다. 라즈베리파이에서도 마찬가지로 힘들게 하는 요소는 없습니다만, 아무래도 인터넷 등에서 얻을 수 있는 자료는 많지 않다는 문제가 있겠네요.
  • 프로필사진 loioscpcp 2017.07.03 21:19 신고 라브베리파이 안에 C/C++ 컴파일러를 따로 설치할 필요는 없는건가요? 제가잘 몰라서
    PC에서 C가 동작이 되더라도 보드에 다운을 시킨다음 실행을 시키면 동작이되는건가요? 아니면 어떤 C관련 프로그램을 다운 받아줘야 하는건가요?
  • 프로필사진 Favicon of http://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2017.07.04 08:53 신고 라즈비안 운영체제에는 기본으로 gcc가 설치되어 있습니다. 그러니까 컴파일러를 따로 설치할 필요는 없습니다.

    PC에서 Cross compiler로 빌드가 정상적으로 되었다면 빌드된 결과를 보드에 다운로드하시면 별다른 프로그램 다운로드 없이 실행이 가능합니다.
  • 프로필사진 loioscpcp 2017.07.06 15:02 신고 감사합니다. 오호 이용을하다보니 PC 자체에만 gcc 설치를 하고 WinSCP를 이용해서 라즈베리파이에 전송하고 실행해보니 잘되네요 ㅎㅎㅎ 자체 내장이 되어있다는것을 몰랐었네요

    한가지더 질문이있습니다. 제가 라즈베리파이3 B버전을 이용하고있는데요. BCM2837 칩자체를 컨트롤하는 studio환경이있을까요?? 찾아보는데 도통 안보여서 질문드립니다. 가령 예로 아두이노의 Atmel studio와 같은 개발환경이 있을까요?
  • 프로필사진 Favicon of http://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2017.07.11 23:30 신고 개발환경은 손에 익으신것을 아무것이나 사용하면 될것 같습니다.
    제 포스트에서는 Eclipse CDT를 사용하는 것을 소개하고 있는데, CodeBlocks도 많이들 사용하는 것으로 알고 있습니다.
  • 프로필사진 opencv 2017.09.21 15:48 신고 감사합니다! 덕분에 빌드 성공했습니다! 그런데 한가지 질문이 있는데 opencv도 이클립스에서 빌드해서
    라즈베리파이에 실행시키고 싶습니다. 그러려면 윈도우에 opencv를 설치해야 하는 건가요?.. 도움 부탁드립니다!
  • 프로필사진 Favicon of http://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2017.10.12 22:11 신고 OpenCV 프로그램을 작성해서 윈도우에서 빌드한 후에 라즈베리파이에서 실행하시려면 당연히 OpenCV 헤더와 라이브러리가 윈도우PC에 있어야 합니다만, 이 때에도 윈도우용 OpenCV가 아니라 라즈베리파이에서 빌드된 라이브러리가 있어야 합니다.
  • 프로필사진 라즈초보 2017.12.02 12:44 신고 잘봤습니다. 근데 이클립스에서 libcurl 설정해서 컴파일 하려고 하면 어떻게 라이브러리를 가져와야 할까요?
  • 프로필사진 Favicon of http://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2017.12.06 10:49 신고 프로젝트에 우클릭해서 나온 메뉴에서 "properties"를 선택하시면 "C/C++ Build" 메뉴의 "Settings"에서 추가적인 참조 라이브러리에 대해 추가할 수 있습니다.
    다만, 타겟 보드에 맞는 라이브러리 선택하셔야 합니다.
댓글쓰기 폼