준호씨의 블로그

arm-linux-gcc를 사용해 "hello arm" 만들기. android adb shell에서 돌려보기. ARM GCC 3.4.3 이용 크로스컴파일 본문

개발이야기

arm-linux-gcc를 사용해 "hello arm" 만들기. android adb shell에서 돌려보기. ARM GCC 3.4.3 이용 크로스컴파일

준호씨 2011.10.19 14:38

오랜만에 arm-linux-gcc를 써볼일이 생겨서 한번 써봤네요.

여러가지 방법이 있지만 좀 옛버전을 이용해서 손쉽게 세팅해 보았습니다.

FALINUX에서 사용하기 좋게 만들어둔 패키지가 있더군요.

 

페도라 코어 2, 코어 3 ARM GCC 3.4.3 크로스 컴파일러 2006.12.09

http://forum.falinux.com/zbxe/?mid=warehouse&category=407522&document_srl=405714

 

에서 다운 받을 수 있었습니다. 페도라 코어라고 적혀 있긴 하지만 저는 Ubuntu 10 에서 작업했습니다.

 

다운로드

$ wget http://forum.falinux.com/_bankimages/_data_toolchain/arm-toolchain-3.4.3.tar.gz

다운로드 주소를 복사해서 wget으로 바로 받았습니다. 편하신 방법으로 받으시면 되겠습니다.

 

압축풀기 (설치하기)

$ sudo tar xvfz arm-toolchain-3.4.3.tar.gz /

root 권한이 있어야 되기에 sudo 를 앞에 넣고 압축을 풀었습니다. root 폴더에다가 압축을 풀어야 됩니다. /usr 폴더 필요한곳에 적당히 압축이 풀어 집니다.

압축을 풀고 나면

$ arm-linux-gcc –version

명령어로 잘 설치 되었는지 확인해 봅니다.

image

네 잘 설치 되었군요 :)

 

프로그램 만들기 – hello arm

즐거운 코딩 시간입니다. 간단하게 만들어 볼까요?

#include <stdio.h>

int main()

{

    printf("hello arm\n");

    return 0;

}

 

컴파일

$ arm-linux-gcc hello_arm.c -static -o hello_arm

gcc가 아닌 arm-linux-gcc 를 사용합니다.

참고1. -static 옵션을 넣어 주지 않으면 실행시킬 때 not found 오류가 나는데 관련 라이브러리가 없어서 나는 오류입니다. 따로 라이브러리를 넣어줘도 되겠지만 우선 쉽게 쉽게 나가죠 ~_~

참고2. x86기반 리눅스 같은데서 돌리면 실행파일이 아니라고 뜨니 참고 하시길 바랍니다.

 

adb 명령어를 이용해서 android에 파일 넣기

파일을 밀어 넣는 방법에도 여러가지 방법이 있겠지만 adb push 명령어를 이용해 보았습니다.

adb push hello_arm /data

 

실행결과

image

권한이 없다고 떠서 우선 777로 줬습니다. 755를 주던 뭘 주던 어쨌든 실행권한이 있으면 되겠습니다.

6 Comments
  • 프로필사진 BlogIcon 윤뽀 2011.11.06 22:30 신고 악, 참으로 오랜만에 보는 도스 화면이네요 ㅎㅎㅎㅎ
  • 프로필사진 BlogIcon 준호씨 2011.11.06 22:34 신고 ㅎㅎ 참고롤 위에건 리눅스 화면이고
    밑에건 도스가 맞군요 ㅎ 하지만 밑에거 역시 도스창에서 안드로이드의 linux로 접속한 것 ㅎ
    리눅스는 command line 모드에서 할만한게 많은데 윈도우는 점점 버리고 있으니 약간 슬프기도 하네요 ㅠㅠ
  • 프로필사진 김상원 2012.04.23 15:35 -static 옵션을 주어도 헤더파일(라이브러리) 을 찾지 못해서 에러가 나는데 어떻게 해야할까요????
  • 프로필사진 BlogIcon 준호씨 2012.04.23 15:40 신고 위에서 설명된 내용은 실행시 나는 오류에 대한 이야기 입니다.
    혹시 컴파일 시 오류가 난다는 말씀이신가요? 컴파일 시 발생하는 오류는 include나 library 경로가 제대로 잡히지 않아서 나는 오류일 겁니다. -I 옵션과 -L 옵션을 사용하셔야 될 듯 하네요.
  • 프로필사진 김상원 2012.04.23 15:42 아하..... 그러면 저같은 경우에는....
    컴파일 할때 -I 옵션으로 라이브러리를 가르켜야 하는건가보네요~~ 감사합니당^^
  • 프로필사진 초보자질문ㅠ.ㅠ 2012.10.07 14:50 안드로이드는 arm버전이 몇인가요???
    저는 현재 arm9에 올리기위해 크로스컴파일을 하려고하는데 해당 사이트가서 목록을 보니 크로스컴파일러들이 gcc버전으로만 분류되있더군요
    arm쪽 버전과는 상관없이 다 호환되는건가요?.?
댓글쓰기 폼