[아이폰] 리눅스에서 아이폰 프로그램 빌드하기
우연찮게 리눅스에서 아이폰 프로그램 빌드하는 방법을 알게 되어 소개 한다.
맥이 있으면 좋겠다만 배포는 안되기 때문에
간단한 코드 빌드후 테스트를 원하는 사람들에게는 적합할 것 같다.
toolchain 빌드만 하면 끝이다. 리눅스 정말 멋진 놈 ~~
간단한 환경을 소개하자면
- Virtualbox에 Ubuntu 설치 (Ubuntu 9.10 32bit ) 굳이 virtualbox에 깔필요 없고 native 에서 해도 된다.
- firmware 3.1.2 ( JB가 가능한 버전 )
- 기타
1. 준비물
- iPhone 3.1.2 SDK : 다음 버전을 다운 받는다. 애플 id로 로그인 하면 된다.
http://developer.apple.com/iphone/download.action?path=%2Fiphone%2Fiphone_sdk_3.1.2__final%2Fiphone_sdk_3.1.2_with_xcode_3.1.4__leo
pard__9m2809.dmg
- iPhone 3.1.2 firmware :
http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-7270.20091008.phn32/iPhone2,1_3.1.2_7D11_Restore.ipsw
- 하드 공간 넉넉하게 약 8기가 이상 확보
2. 설치
- 빌드 전에 필수 패키지들을 설치한다.
apt-get install \
automake \
bison \
cpio \
flex \
g++ \
g++-4.3 \
g++-4.3-multilib \
gawk \
gcc-4.3 \
git-core \
gobjc-4.3 \
gzip \
libbz2-dev \
libcurl4-openssl-dev \
libssl-dev \
make \
mount \
subversion \
sudo \
tar \
unzip \
uuid \
uuid-dev \
wget \
xar \
zlib1g-dev \
build-essential \
3. toolchain 설치
홈디렉토리의 적당한 위치를 만들고 svn 저장소에서 다운 받는다.
4. firware와 sdk 파일 복사
다운로드한 sdk 파일을 ~/iphone/toolchain/files에 복사
firmware 파일을 ~/iphone/toolchain/files/firmware에 복사
5. toolchain.sh 파일 편집
firmware 파일은 암호화되어 압축된 이미지이므로 VFDecrypt Key가 필요하다.
따라서 toolchain.sh 파일을 편집기로 열어 DEVICE 및에 아래 코드를 추가해 준다.
DECRYPTION_KEY_SYSTEM="47D76295817F74953F8E557B4917FE2201E9778A9900E43FBF311A83F176FE521B996A4B"\
6. 빌드
다음 명령으로 toolchain을 빌드한다.
./toolchain.sh all
과정은 sdk와 firmware에서 필요한 파일을 추출하는 작업 과
코드를 빌드하는 과정으로 나누어 진다.
그런데 아마 build fail 이 날것이며 make.log 를 확인해 보면 된다.
에러난 파일에 <stdio.h> 와 <stdlib.h> 를 include 시키면 된다.
본인은 src/cctools/ld64/src/ld.cpp Options.cpp 파일을 수정하였다.
새로 수정후에는
./toolchain.sh build 명령으로 빌드하면 되고
불필요한 과정은 생략해도 된다.
7. 확인
다음 처럼 확인해 본다면 빌드가 성공한 것이다.
~/iPhone/toolchain/toolchain/pre$ ls
arm-apple-darwin9 bin include info lib libexec man share
8. ldid 설치
아이폰의 ssh 접속후 cydia에서 apt를 설치후 다음 명령으로 ldid를 설치한다.
apt-get install ldid
9. APP 설치
빌드후 아이폰에 설치까지 하는 과정이다.
반드시 iPhone에 ssh가 켜져 있는 상태여야 하고 시스템에서 접근이 가능해야 한다.
여기서는 HelloToolchain이라는 샘플소스를 빌드한다.
cd ~/iphone/apps/HelloToolchainIP=xxx.xxx.xxx.xxx PATH=../../toolchain/pre/bin/:$PATH make deploy
10. iPhone!!
- 아이폰에 설치된 HelloToolchain, 잘 자리잡고 있다.
간만에 꾸며보니
컴퓨터를 좋아하는 페이스북 사용자입니다.
내용이 좋아서 다른 분들께 소개시켜드리고 싶네요.
퍼갈께요^^
넵 얼마 든지요.. ^^
정말 담아놓고 두고두고 보고 싶은 글입니다.
리눅스를 공부하는 초보로써 정말 좋은 정보 입니다.
이런 좋은 정보 많이 많이 부탁드립니다.
퍼갈게요^^*
우분투 12.04 에서 해봤는데요,6번 까지는 실행이 되는거 같은데toolchain.sh all 을 입력하면,
The following command are missing: xar
you may need to install additional software for them using your package manager.
라는 문구가 뜨면서 그 다음이 진행되지 않습니다.make.log파일을 확인하고 싶은데 어디서 확인하는지도 잘..모르겠습니다.
부탁 드리겠습니다.알려주시면 안될까요..?