iphone/ipod touch toolchain その後

http://code.google.com/p/iphone-dev/wiki/Building のとこが更新されてた。手順通りやったら、Debian testing でもちゃんとコンパイルできた(・∀・)
UIKit をいろいろ触ってるけども、ドキュメントがまとまってないから、よくわからない・・・。
他の人が作っているものを参考に地道にやるかー。

手順

svnからそのままとってくると LLVMiphone-dev の整合性がとれないので注意。

  • LLVM をとってくる
$ svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm-svn -r 42286
$ pushd llvm-svn
$ ./configure --enable-optimized
$ make ENABLE_OPTIMIZED=1
$ sudo make install
$ export LLVMOBJDIR=`pwd`
$ popd
  • iphone-dev をとってくる
$ svn checkout http://iphone-dev.googlecode.com/svn/trunk/ iphone-dev -r 198
$ pushd iphone-dev
$ sudo mkdir /usr/local/arm-apple-darwin
  • odcctools を作成
$ mkdir -p build/odcctools
$ pushd build/odcctools
$ ../../odcctools/configure --target=arm-apple-darwin --disable-ld64
$ make
$ sudo make install
$ popd
  • iphone のファイルイメージを指定
$ export HEAVENLY=/usr/local/share/iphone-filesystem

ipod touch から / 以下のファイルを全て抜き出して保存しておいて、その場所を指定。

  • OSX の include ファイルを指定
$ pushd include
$ ./configure --with-macosx-sdk=/usr/local/share/MacOSX10.4-Universal-SDK/Developer/SDKs/MacOSX10.4u.sdk
$ sudo bash install-headers.sh
$ popd

こちらも別途 OSX から SDK を抜き出し、その場所を configure のところで指定。

  • csu を作成
$ mkdir -p build/csu
$ pushd build/csu
$ ../../csu/configure --target=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

とりあえず環境ができたところで終了。ちゃんと動くかしら・・・。
追記:ちゃんと HelloWorld 動いた。これでいろんなもの作れるなぁ。楽しみ楽しみ。

iphone/ipod touch toolchain

ipod touch がハックされ、いろいろといじれるようになってきたので、クロスコンパイラ環境を整えてみる。OSX があればバイナリイメージがあるらしいのですが、サーバの Linux しかないので iphone-dev*1 を参考に地道に make。が、なかなか手順通りにいかなかったのでメモ。

2.6.22

vmware 上で iPod がうまく使えなかったところ
わんこ日記(2007-09-22)
の記事を見かけたので、2.6.22 にアップデートしてみる。
kernel以外で手間取った部分はいつもの四つ。

  • GV-MVP/RX2W( ivtv 1.0.2 + ぱ研 )

ぱ研さんのところにある saa7115.c tvaudio.c Kbuild を ivtv にパッチして対応。

  • I-O DATA GV-MC/RCkit( lirc CSV )

lirc 0.8.2 は 2.6.22 で動かないらしく、CSV のほうを入手して対応。

2.6.22 にしてみたのですが、iTunesiPod を認識してくれない・・・。無念。

2.6.21.7 とGW-US54GXS

カーネルを 2.6.21.7 に更新。カーネル以外に更新するところは下の四つ。結構面倒。

無線アクセスポイントもサーバにまとめようとGW-US54GXSを買ってくる。
http://www.cozmixng.org/~rwiki/?cmd=view;name=GW-US54GXS を参考にセットアップ。サイトは SourceForge に移っていたので、下のコマンドで svn のソースを取得。

#  svn co https://zd1211.svn.sourceforge.net/svnroot/zd1211 zd1211

APの設定は上のサイトを参考に設定完了。AirMac Express より出力が弱いかな?あと大量にしたのメッセージがログに残ってるのが気になるなぁ。通信しているとたまに安定しないし・・・。svnを地道におっていくかな。

ZDAPIOCTL: copy_from_user error