좋은 프로그램은 마음의 여유에서 나온다.

Hello World 크로스 컴파일 하기 본문

임베디드/라즈베리파이

Hello World 크로스 컴파일 하기

좋은데이 2013. 2. 16. 13:06

이클립스를 이용한 헬로우 월드 프로젝트 크로스 컴파일 하기


메뉴의 File -> New -> C++ Project를 눌러 새로운 프로젝트 생성창을 실행합니다.


프로젝트 이름을 입력해 주고 Project type 는 Executable -> Empty Project를 선택합니다.


오른쪽의 Toolchains는 Linux GCC를 선택한 후 Finish 버튼을 클릭합니다.




프로젝트를 생성한 후 소스파일을 만들겠습니다.


왼쪽의 Project Explorer에서 생성한 프로젝트를 선택한 후 메뉴의 File -> New -> Source File 을 선택합니다.


소스파일명을 입력하고 Finish를 누르면 파일이 생성됩니다.



헬로우 월드 프로그램을 작성합니다.



에러와 물음표가 막나오네요..


arm 컴파일러와 헤더파일, 라이브러리 경로를 설정하도록 하겠습니다.


소스파일을 생성할 때 처럼 Project Explorer에서 HelloWorld 프로젝트를 선택합니다.


메뉴의 Project -> Properties를 선택합니다.


C/C++ General -> Paths And Symbols를 선택한 후 GNU C++에 바로전에 다운받은 라즈베리파이툴 중 아래 디렉토리들을 추가해줍니다.


tools/arm-bcm-2708/gcc-linaro-arm-linux-gnueabihf-raspbian/arm-linux-gnueabihf/include

tools/arm-bcm-2708/gcc-linaro-arm-linux-gnueabihf-raspbian/arm-linux-gnueabihf/libc/usr/include

tools/arm-bcm-2708/gcc-linaro-arm-linux-gnueabihf-raspbian/lib/gcc/arm-linux-gnueabihf/4.7.2/include-fixed

tools/arm-bcm-2708/gcc-linaro-arm-linux-gnueabihf-raspbian/lib/gcc/arm-linux-gnueabihf/4.7.2/include

tools/arm-bcm-2708/gcc-linaro-arm-linux-gnueabihf-raspbian/lib/gcc/arm-linux-gnueabihf/4.7.2/finclude




다음으로는 라이브러리 경로를 지정해주겠습니다.


Library Paths 탭을 선택한 후 아래의 경로들을 추가해줍니다.


tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/arm-linux-gnueabihf/lib

tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/arm-linux-gnueabihf/libc/lib

tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/arm-linux-gnueabihf/libc/lib/arm-linux-gnueabihf

tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/lib/gcc/arm-linux-gnueabihf/4.7.2

tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/libexec/gcc/arm-linux-gnueabihf/4.7.2



마지막으로 왼쪽 창의 C/C++ Build -> Settings에서 Tool Settings을 합니다.


GCC CGG+ Compiler에서 g++ 을 arm-linux-gnueabihf-g++ 로 변경해줍니다.


arm-linux-gnueabihf-g++이 환경변수로 설정되어 있어야 합니다. 초반에 git로 받운받을 때 설정해주었습니다.


GCC C Compiler의 gcc는 arm-linux-gnueabihf-gcc로 변경합니다.


마찬가지로 GCC C++ Linker은 arm-linux-gnueabihf-g++ , GCC Assembler은 arm-linux-gnueabihf-as로 변경합니다.



이제 설정을 완료 한 후 소스 파일을 저장하고 빌드를 하겠습니다.


Ctrl + B를 눌러서 빌드하거나 메뉴의 Project -> Build Project를 눌러 빌드를 합니다.


콘솔창을 통해 빌드가 완료된 것을 확인할 수 있습니다.


실제 파일이 있는 디렉토리로 이동하여 확인합니다.



$ cd ..


$ cd workspace


$ cd HelloWorld


$ ls -al


$ file HelloWorld


$ ./ HelloWorld


HelloWorld 실행파일이 ELF 32-bit LSB executable, ARM, version 1 로 돼있다는 것을 알 수 있고, 바이너리 파일을 실행할 수 없다고 한다.



이클립스에서 ssh를 접속해 바로 라즈베리파이에서 실행되게 할 수 도 있지만, 라즈베리파이에 모니터가 없어서  터미널로 접속해서 nfs로 공유해서 실행해보도록 하겠습니다.


Comments