iPhone apps Dev. on etch

|
Clip to Evernote iPhone apps Dev. on etch

大苦戦.なかなかゴニョゴニョだから,上手くいかないぜ.以下,備忘録.

何はなくとも,条件反射でapt.

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install subversion csh
$ sudo apt-get install libc6-dev flex m4
$ sudo apt-get install bison pax gcc g++ patch
$ sudo apt-get install unzip libssl-dev

[iPod touch] Linux(Debian etch)環境でiPhone/iPod touch用の開発環境を整える - airy-fairy

ADC Member SiteからXcode2.4.1をいただいて,以下を実行.

$ dd if=xcode_2.4.1_8m1910_6936315.dmg skip=323904 | gunzip | pax -r

[iPod touch] Linux(Debian etch)環境でiPhone/iPod touch用の開発環境を整える - airy-fairy

ここから,指示通りにやっても上手くいかない.適宜修正.

$ wget http://どこかしら/iPhone1,1_1.0_1A543a_Restore.ipsw
$ unzip iPhone1,1_1.0_1A543a_Restore.ipsw
$ wget http://daeken.pastebin.ca/raw/603179 -O vfdecrypt.c
$ gcc -o vfdecrypt vfdecrypt.c -lcrypto
$ ./vfdecrypt 694-5262-39.dmg decrypted.dmg -k 秘密の文字列

[iPod touch] Linux(Debian etch)環境でiPhone/iPod touch用の開発環境を整える - airy-fairy

「どこかしら」はappleのどこかです.載せてもいいと思うんだけど,URLが長くてはみ出すから,割愛.一応,Google先生に依頼.「秘密の文字列」は重要.引用先のサイトには書いていないが,これがないとdecryptできない.これも長くてはみ出すから,割愛.ゴニョゴニョする.ここまではetchでもできた.

$ wget http://vu1tur.eu.org/tools/download.pl?dmg2img.tar.gz -O dmg2img.tar.gz
$ tar xvzf dmg2img.tar.gz
$ pushd dmg2img
$ make
$ popd
$ ./dmg2img/dmg2img -i decrypted.dmg -o iphone_rootfs.img
$ sudo mkdir /mnt/iphonefs
$ sudo mount -t hfsplus iphone_rootfs.img /mnt/iphonefs

[iPod touch] Linux(Debian etch)環境でiPhone/iPod touch用の開発環境を整える - airy-fairy

これがダメ.etchだと「セグメンテーション違反です」と怒られる.もちろん,mountできない.調べてみると,Ubuntuでの成功例(こことかここ)が見あたるので,見捨てたUbuntuに環境を準備して,やってみたところ,確かにセグメンテーション違反が発生するものの,無視できそうなので,etchに持ってきてmountしてみた.まぁ,マウントも上手くいかないから,オプションを付けるわけだが.

$ sudo mount -t hfsplus -o loop iphone_rootfs.img /mnt/iphonefs
$ sudo mkdir /usr/local/share/iphone-filesystem
$ sudo cp -R /mnt/iphonefs/* /usr/local/share/iphone-filesystem

いい感じだ.続いて,LLVMをsvnから取り出そうとするも,学内FWに阻まれてsvnできないので,proxyの設定をする.設定ファイルは~/.subversion/serversらしいぜ.

http-proxy-host = proxy.example.com
http-proxy-port = 8080
http-proxy-username = tora
http-proxy-password = プロキシ認証のパスワード

Subversion - PukiWiki

たぶん,[global]の中に書いた方がいいと思う.きっと.以下,LLVMを取得して順番にやっていくわけだが,躓かなかったので,打ち込んだコマンドだけ.

$ svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm-svn -r 42498
$ pushd llvm-svn
$ ./configure --enable-optimized
$ make ENABLE_OPTIMIZED=1
$ sudo make install
$ export LLVMOBJDIR=`pwd`
$ popd
$ svn checkout http://iphone-dev.googlecode.com/svn/trunk/ iphone-dev
$ pushd iphone-dev
$ sudo mkdir /usr/local/arm-apple-darwin
$ mkdir -p build/odcctools
$ pushd build/odcctools
$ ../../odcctools/configure --target=arm-apple-darwin --disable-ld64
$ make
$ sudo make install
$ popd
$ export HEAVENLY=/usr/local/share/iphone-filesystem
$ pushd include
$ ./configure --with-macosx-sdk=/Developer/SDKs/MacOSX10.4u.sdk
$ sudo bash install-headers.sh
$ popd
$ mkdir -p build/csu
$ pushd build/csu
$ ../../csu/configure --host=arm-apple-darwin
$ sudo make install
$ popd
$ mkdir -p build/llvm-gcc-4.0-iphone
$ pushd build/llvm-gcc-4.0-iphone
$ ../../llvm-gcc-4.0-iphone/configure \
--enable-llvm=`llvm-config --obj-root` \
--enable-languages=c,c++,objc,obj-c++ \
--target=arm-apple-darwin \
--enable-sjlj-exceptions \
--with-heavenly=$HEAVENLY \
--with-as=/usr/local/bin/arm-apple-darwin-as \
--with-ld=/usr/local/bin/arm-apple-darwin-ld
$ make LLVM_VERSION_INFO=2.0-svn-iphone-dev-0.3-svn
$ sudo make install
$ popd
$ popd

[iPod touch] Linux(Debian etch)環境でiPhone/iPod touch用の開発環境を整える - airy-fairy

svnとmakeはえらい待たされます.のんびり行こう.Hello World!編に続く.

ちなみに,Windows環境下のcygwinでどうにかする方法も見つけた.試していないけど.

関連:
Building - iphone-dev - Google Code
Creating native iPhone apps by Lucas Newman(注※リンク先はpdf)

プロフィール

e-m@il @ddress