달력

12

« 2024/12 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31




아이팟 터치 & 아이폰 개발 with 툴체인 2 아이폰 개발


툴체인 설치를 위해 고생한 분들과 마찬가지로 많은 삽질을 했더랬습니다.

http://date4u.tistory.com/tag/Toolchain 에서 많은 참고를 했었지만 ,

중간에 몇군데 막히는 부분이 있더군요.

따라서 그부분을 추가해서 다시한번 툴체인 설치에 관한 글을 써 볼까 합니다.

(설치한지 며칠 지나서 쓰려니 벌써 기억이 안나기 시작하네요 -_ㅜ)

 

## 혹시 잘 안되는 부분이나 글에 오류가 있으면 덧글 부탁드립니다.

## 며칠전에 했던거라 잘못 쓴 부분이 있을 수도 있기 때문입니다.

 

 

 툴체인 설치과정

 

1. 맥OS X 용 SDK 다운로드

2. 아이폰/아이팟터치용 root filesystem 다운로드

3. 아이폰용 크로스컴파일러가 설치된 cygwin 다운로드 및 설치

4. cygwin에 필요한 파일들 복사 및 설치

5. Hello, world 테스트

6. 이클립스 및 이클립스 CDT 설치 및 연동

7. 이클립스에서 컴파일 하기

 

 

 

 

 

맥OS X용 SDK 다운로드

Xcode 2.5 이미지를 다운로드 합니다.

로그인 후 다운로드가 가능한데, 어짜피 가입해두시는 편이 좋을듯 합니다.

다운받은 이미지는 dmg파일인데, PowerISO라는 프로그램을 통해 가상시디롬으로 만들어서 열어야 합니다.

 

나중에 cygwin을 설치하고 나서 필요한 파일들을 복사하도록 합니다.

 

 

 

아이폰/아이팟터치용 root filesystem 다운로드

아이폰이나 아이팟 터치에서 직접 다운로드 할 수도 있으나, 잘 안된다고 하더군요.

저도 직접 인터넷에서 다운로드 해서 설치했습니다. 일단 1.4용 firmware를 다운로드 합니다.

 

다운로드 후 확장자를 zip으로 변경해 주고 압축파일을 연 다음, 022-3894-4.dmg 파일을 압축해제 합니다.

 

이 글에 첨부된 

 

파일을 다운받아서, 

022-3894-4.dmg 파일과 같은 경로에 넣어준 후,

압축을 풀고 vfdecrypte.exe 파일 및 dll 파일 2개가 생성된것을 확인합니다.

 

cmd 명령으로 쉘을 쉴행시켜서 위 경로로 갑니다. 명령창에,

vfdecrypt.exe -i 022-3894-4.dmg -o trasyia114.dmg -k d0a0c0977bd4b6350b256d6650ec9eca419b6f961f593e74b7e5b93e010b698ca6cca1fe

라고 입력 해서 이미지를 디코딩 하면 trasyia114.dmg 파일이 생깁니다.

이 파일을 나중에 cygwin 설치 후 PowerISO로 열어서 필요한 파일을 꺼내올 겁니다.

 


 

 

 

 

아이폰용 크로스컴파일러가 설치된 cygwin 다운로드 및 설치

Cygwin setup 파일을 다운로드 받아서 실행합니다.

 

아래 그림과 같이 User URL을 http://www.iphonegameover.com/cygwin 으로 입력하고 Add버튼을 눌르면 소스리스트에 위 사이트가 추가되면서 크로스 컴파일러가 설치된 cygwin 패키지가 다운로드 될 준비가 됩니다.

 


 
























 

준비가 되면 아래 그림과 같은 화면이 나오는데, default로 설치 합니다.

(가끔 이화면이 안나오고 에러가 발생하면서 setup.exe가 종료되기도 하는데 이럴때는 다른 pc에서 파일을 로컬에 다운로드하고 복사해 와서 설치해도 됩니다.)

 


 

 

 

 

 

 

cygwin에 필요한 파일들 복사 및 설치

cygwin 설치후 최초로 실행하기 전에, Xcode를 설치 합니다.

위에서 받은 Xcode이미지를 PowerISO로 열어서 아래 경로의 Archive.pax.gz파일을 찾습니다

\Packages\Packages\MacOSX10.4.Universal.Pkg\Contents\Archive.pax.gz

이 파일을 cygwin설치 디렉토리의 home/username/ 아래에 복사해 넣습니다

(c:에 설치하셨다면, c:/cygwin/home/username/ 이 되겠습니다)

 

그리고 위에서 디코딩한 root filesystem 역시 PowerISO로 열어서

/user/local/arm-apple-darwin/filesystem/ 아래에 복사해 넣습니다.

 


 

 

이제 cygwin을 실행해 보면, 자동으로 Archive.pax.gz파일을 찾았다고 나오고 설치가 진행됩니다.

설치가 완료되면 Your tool chain installation is now complete! 라는 메시지가 나오고 설치가 완료됩니다.

 

 

 

 

 

Hello, world 테스트

 이제 Hello, world를 컴파일 해 볼 시간입니다.

이 글에 첨부된 


을 다운받아 압축을 풀고 cygwin에 helloWorld.app라는 디렉토리를 만든뒤 복사해 넣습니다.

컴파일은 make 명령으로 간단히 진행됩니다.

 


 

컴파일 되었으면 실행을 해 볼 차례입니다.

제 경우는 터치밖에 가지고 있지 않으므로, Touch Explorer로 터치의 /Applications 디렉토리에 넣고 실행해 보았습니다 (Jail-break 된 터치라야 업로드가 될겁니다). Auto-permition(권한을 자동으로 설정해주는 어플, 터치 Jail-break 후에 따로 설치해야 함)으로 권한 설정을 해주시면 섬머보드가 재 실행되면서 터치 화면에 추가된 hello, world를 보실 수 있습니다. 실행하면 아래와 같은 화면이 나옵니다.

 

 


 

 

 

 

 

이클립스 및 이클립스 CDT 설치 및 연동

이제 이클립스를 설치하기 위한 준비단계 입니다.

 

먼저 윈도우의 환경변수에서 path를 수정해 줘야 합니다.

cygwin에서 env | grep PATH 명령으로 path를 확인해 보면 아래와 같은데,

/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin: 라는 부분만 복사를 해서

윈도우의 환경변수중 Path에 추가해 줍니다.

 

당연히 경로는 c:\cygwin 아래 일 것이므로

c:\cygwin\usr\local\bin;c:\cygwin\usr\bin;c:\cygwin\bin;c:\cygwin\usr\X11R6\bin

의 형태로 추가를 해주시면 됩니다.

 

include경로 추가도 해줘야 하므로

윈도우의 환경변수에 include라는 변수이름을 추가하고 변수값에는

c:\cygwin\usr\local\arm-apple-darwin\include

를 추가해 줍니다.

 

이제 이클립스 for C, C++를 다운로드 합니다.

그리고 이클립스 CDT도 다운로드 합니다.

 

먼저 이클립스를 설치 한 후, 실행 합니다.

아래 그림처럼 Help > Software updates > Find and install 을 실행합니다

 


 

 

 

여기서 Search for new features to install을 선택하고

New Archived Site... 로 들어가서 아까 다운로드한 CDT zip파일을 선택한 후 설치합니다.

 


 

 

 

이제 자잘한 설정이 남았습니다.

 

이클립스를 닫은뒤 재실행 하시고, Window > Preference... 로 가셔서

C/C++ > NewCDT project wizard > Makefile Project 로 가셔서

아래 그림처럼 Elf Parser, Cygwin PE Parser, GNU ELF Parser 를 체크해 줍니다.

(만약 New CDT project wizard 항목이 없다면 CDT설치가 잘못된것입니다.)

 

그리고 Error Parsers 탭에서 모두 선택합니다.

 


 

 


 

 

 

자 이제 준비가 거의 끝났습니다.

다른 포스트에서 본 경우에는 이후 정상적으로 컴파일이 되었다고 하는데, 제 경우엔 잘 되지 않아서 이리저리 고민하다 알아낸 것이 추가적인 이클립스 내의 경로 설정입니다.

(혹시 컴파일 할때 Exec error: Launching failed 라는 메시지가 뜨신다면 이 방법으로 해결이 될겁니다)

 

Window > Preference... 로 가셔서 C, C++ > Environment로 갑니다.

New를 선택하고 Name에 PATH를 Value 에 윈도우의 환경변수 Path와 같은 내용을 써 줍니다.

 


 

 

 

 

 

 

이클립스에서 컴파일 하기

File > New... > C project 로 가서 새 프로젝트를 생성합니다.

모두 default로 합니다.

 


 

 

 

아까 cygwin에서 썼던 hello, World 소스를 import 합니다.

프로젝트 이름 우클릭 > import

 


 

 

 

General에서 file system을 고른후 hellow, Wolrd 파일들을 압축 풀어둔 디렉토리를 선택하면

아래처럼 파일들을 골라서 import할 수 있습니다.

 


 


 

 

이제 컴파일을 해 봅니다.

 

Project > Clean... 으로 컴파일을 하시면 아래와 같이 나와야 정상적으로 컴파일이 된 것입니다.

수고하셨습니다.

 


 

 

 

길고긴 포스팅이 드디어 끝이났네요.

다음 포스팅이 언제가 될지는 저도 모릅니다. 배워가면서 하는입장이라서요 ^^.

그럼 즐거운 개발들 되시기 바랍니다.

:
Posted by 라면스프


 아이팟 터치 & 아이폰 개발 with 툴체인 아이폰 개발

 아이팟 어플리케이션 개발을 시작하며

 

국내에 아이폰(iPhone)이 들어온다는 소식도 간간히 들려오고, 국내의 아이팟 터치(iPod Touch) 사용자도 늘어나면서 아이팟에 대한 관심이 어느때 보다 높은것 같다. 실제로 아이팟 터치를 해킹(락을 푸는 정도)해서 사용해 보면 그 무한한 가능성에 놀라움을 금치 못하게 된다. 본인도 아이팟 터치를 이리저리 가지고 놀던중 아이팟 터치용 어플리케이션을 만들어보는것이 재미있겠다는 생각이 들던 차에, 이번에 도전을 해보게 되었다. 그러나 이것은 결코 순탄치 않은 길이었다. 그간 겪을 일들을 앞으로 이 카테고리로 정리해 볼까 한다. 언제 귀차니즘으로 관둘지 모르지만 ^^

 

 

 

 

 

 

 가장 기본적으로 알아야 할것들

 

본 글은 기본적인 개발을 해보았고 한두가지 언어를 다룰 줄 알지만, 아이폰이나 맥OS(MacOS)에 대해 전혀 지식이 없다고 가정을 하고 쓰여질 것이다 (왜냐하면 본인이 그렇기 때문이다).  따라서 기본적으로 아이폰 어플리케이션 개발을 위해 알아야 할 지식들도 함께 소개를 할까 한다. 개발자가 아닌 분들도 애플 관련 지식을 쌓는데 도움이 되실 것이고, 개발자 분들도 코딩이 아닌 전반전 지식을 쌓는데 도움이 되셨으면 하는 바이다 (거창하게 말하지만 본인도 잘 모른다;).

 

아이폰용 어플리케이션을 개발 할 수 있는 방법 2가지

(1) 맥 에서 편하게 개발

(2) 툴체인을 통해 크로스컴파일

 

맥을 가지신 분들(정말 부럽다) 이라면 애플에서 공개한 펌웨어(firmware) 2.0 용의 SDK를 이용해 아주 좋은 개발환경을 구성할 수 있다. 그래피컬한 개발환경이나 편리한 템플릿(template)들을 제외 하더라도, 아이폰 에뮬레이터가 제공되어 개발중에 결과를 쉽게 확인할 수 있다는 점은 너무나도 매력적이다. 다만, SDK에서 개발한 아이폰 어플리케이션을 배포하기 위해서는 라이센스를 구입해야 한다는 점(10만원 정도였던걸로 기억한다) 때문에 개발자들의 원성을 사고 있다. 그렇다 하더라도 맥에서 개발한 코드를 크로스컴파일로러 컴파일 해주는 방법을 이용해도 될듯 하기 때문에, 맥을 가지고 개발한다는건 여전히 부러운 방법이다.

 

이 글은 기본적으로 툴체인을 구성하고 개발하는것에 목표를 두고 있고, 사실 툴체인을 통한 개발환경을 구성만 하면(그게 제일 문제지만), 그 후로는 맥에서 개발하는것과 큰 차이는 없으므로 (라고 스스로를 위로하자) 툴체인을 통해 개발해 배포할 수 있는 방법을 소개할 것이다.

 

툴체인이 뭐야?

툴체인(toolchain)은 간단히 말하면 서러운 셋방살이라고 할 수 있다. 위키피디아를 뒤져보면 다 나오는 얘기지만, 다른 플랫폼의 소프트웨어 개발을 위해서 사용되는 개발도구의 집합을 말한다. 이게 왜 셋방살이인가 하면, 컴파일러도 타겟 플랫폼에 맞는걸 써야하고, 라이브러리도 타겟 플랫폼의 것을 사용해야 하고, 컴파일 후에도 타겟 플랫폼에 실행파일을 업로드 해서 테스트를 해야하는 등등 번거로운 것들이 늘 함께 하기 때문이다.

 

그럼 툴체인을 어떻게 구성하는데?

툴체인을 구성하는 방법은 무궁무진 하지만, 기본적으로 크로스 컴파일러(Cross compiler)와 라이브러리들은 필수 요소이다. 아이폰용 개발 툴체인을 구성하는것도 여러 방법이 있지만 쉽게 생각해 볼 수 있는 방법은 리눅스(Linux)에서 개발하여 아이폰으로 테스트 하는방법과, 윈도우에서 이클립스(Eclipse)로 개발하여 Cygwin으로 컴파일 한뒤, 아이폰으로 테스트를 하는 방법등이 있다. 여기서는 이클립스를 이용하여 윈도우 환경에서 개발하는 방법을 추천한다. 즉 코딩(Eclipse)-컴파일(Cygwin gcc-arm cross complier)-테스트(아이팟터치) 의 순서가 될 것이다.

 

Cygwin 과 Cross Compiler

설마 이걸 모를까 싶지만, 의외로 모르는 분들도 많을것이다. Cygwin은 리눅스용 프로그램들을 윈도우용으로 포팅한 것이다. 따라서 Cygwin에서 ls명령을 쳤을때 실행되는건 리눅스에서 실행되는게 아니라 여전히 윈도우 커맨드라인에서 ls명령을 사용하는것과 다를바가 없는 것이다. 하지만 Cygwin은 상당히 잘 만들어 져 있기 때문에 웬만한 리눅스 사용환경을 잘 지원하고 있다.

 

크로스컴파일러는 어플리케이션을 컴파일 해서 머신코드를 생성 할 때, 타겟 머신에서 사용하는 코드를 생성할때 사용한다. 이말이 무슨 뜻인고 하니, 컴파일을 해서 CPU가 이해할 수 있는 어셈코드와 바이트코드(기계어)를 생성 할 때, 내 PC의 Intel CPU가 사용하는 언어로 번역을 하는것이 아니라, 타겟 머신인 아이팟의 ARM CPU가 사용하는 언어로 번역을 한다는 것이다. 따라서 이렇게 크로스컴파일 된 코드는 내 PC에서는 동작하지 않고 아이팟에서 동작 하는 것이다.

 

점심시간이 다가오므로 글을 여기서 마치고, 다음 포스트에서 툴체인 설치법과 이클립스와의 연동법을 써 보고자 한다.



다음글보기http://starplaying.tistory.com/114



:
Posted by 라면스프