iPhoneアプリをLinuxで作成するの法
iPhone Developer Program の申請が全然通らないので、勝手アプリの作成環境を整えてみた。
Cydia でおなじみの saurik 氏がクロスコンパイル環境の作り方を以下のページに書いてくれていて、基本これに従えばOK。
すごいなー。saurik++
簡単に環境作れるようにスクリプトにまとめた。ヘッダのコピーのとことかちょっと追加してある。
簡単に説明。
iPhone のファームウェアのファイルを、ごにょごにょ(ググればすぐわかる)して展開して ~/tmp/iphone/iPhone2.1
にコピー。
iPhone SDKをダウンロードしてきて展開して MacOSX10.5.pkg
と iPhoneSDKHeadersAndLibs.pkg
を ~/tmp/iphone/Developer
に展開。
http://www.opensource.apple.com/darwinsource/Current/ から
- CF-*
- DiskArbitration-*
- IOCDStorageFamily-*
- IODVDStorageFamily-*
- IOGraphics-*
- IOHIDFamily-*
- IOKitUser-*
- IOStorageFamily-*
- Libc-*
- WebCore-*
- cctools-*
- configd-*
- launchd-*
- libsecurity_authorization-*
- libsecurity_cdsa_client-*
- libsecurity_cdsa_utilities-*
- libsecurity_cms-*
- libsecurity_codesigning-*
- libsecurity_cssm-*
- libsecurity_keychain-*
- libsecurity_mds-*
- libsecurity_ssl-*
- libsecurity_utilities-*
- libsecurityd-*
- xnu-*
をダウンロードして ~/tmp/iphone/apple
に展開。(*
はバージョン番号)
で、あとは上のスクリプト実行すれば ~/app/toolchain
にクロスコンパイル環境がインストールされる。YATTA!
ちなみに僕の Debian 環境ではこの作業をするために
flex bison gcc-multilib gobjc
などのパッケージを追加でインストールする必要があった。
これで iPhone 用のバイナリが作れるようになる。あとは ssh なり何なりで iPhone にファイルを転送すればOK。
ただ iPhone は署名済みなアプリケーションしか実行できないのでそこもまた saurik 氏の記事
を参考にすれば回避できる。
OSXの.dmgファイルをLinuxでごにょるの法
dmg2img というのがよくできてる。
dmg2img xcode.dmg xcode.img
とすると xcode.img
という HFS+
のイメージファイルにしてくれる。
で、
mount -t hfsplus -o loop xcode.img /mnt
とかでマウントできる。
その中のpkgファイルの中身を取り出すには
xar -xf /mnt/Packages/MacOSX10.5.pkg Payload
mv Payload Payload.gz
gunzip Payload.gz
mkdir dump
cd dump
cat ../Payload | cpio -i -d
とかするとdumpディレクトリ以下にpkgが展開されるという感じ。
lv の alt screen
lv
便利なんだけど、alternate screen で動作するのがちょっとなぁ。
終了すると今まで表示してたの消えちゃうのが嫌。これってなんか制限できないのかなー。オプションみても特にないようだ。
ps の日付パース
ps
の出力をパースしたかったんだけど、日付部分めんどいなと思いきや Date::Manip
使ったら一発だった。覚えててよかった!
30boxes.pl とかで使われてるやつ。
mutt と irssi
なんか似てるよね。
mutt 使いは irssi も気に入る説。
colinuxの利点
cofsもあった。
VMWare Server だと vmware-tools についてるファイル共有のカーネルモジュールをインストールすれば共有できるはずだけど、Debianではコンパイルできなかった。
colinux とかまだつかってるの
これみて、
そう思った。いまは VMWare Server の時代!!
僕が思う colinux のほうが優れているところはその PC に ext3 領域とかあってそれを colinux から使いたいとかそういう場合があるときのみ。
それ以外はすべてにおいて VMWare Server のほうが優れていると思う。あ、パフォーマンスは分からない。
VMWare Server のほうが特に優れているところは以下。
仮想マシンをサスペンドできる
ので、Windows Update とかきて PC を再起せざるを得ない状況になったらおもむろに仮想PCをサスペンド。PC再起動。
再起後何事もなかったかのように作業続行可能。
使った分だけディスク消費
最初から確保する必要ナシング。
ネットワーク設定が豊富
colinux は VMWare でいうところの NAT か Host only というネットワーク設定で使うしかない(と思う)のだけど、VMware Serverはそれプラス Bridged モードというのがあり、VMWare の仮想ネットワークアダプタが直接ネットにつないでるかのように設定できる。
ゲストOSがDHCPでIPとったら、自分のPCからもLAN内のほかのPCからもそのIPでアクセスできるって感じ。hamachi もうごくよ。
後オレは使ってないんだけど、USBつかえたりとかもするっぽい。
などなど、なんでまだ colinux? って感じだ。
64bit Debian で 32bit アプリを動かすの法
$ sudo aptitude install ia32-libs
hamachi がうごかんくてあせったわー。
undefined symbol: FT_GlyphSlot_Embolden
ものすごーくひさしぶりに Gimp を使おうとしたら
gimp: symbol lookup error: /usr/lib/libcairo.so.2: undefined symbol: FT_GlyphSlot_Embolden
とか言うエラーで起動しやがらねぇ@ubuntu breezy
ぐぐったら
[debian-users:45959] Re: etchでKDEが起動しくなった
libxft2が中途半端な状態でtesting行きになったために同様の問題多数で阿鼻叫喚になっていますね (http://bugs.debian.org/cgi-bin/pkgreport.cgi?pkg=libxft2)。
libfreetype6をunstableから持ってくることで当面は解決できるようです。
とかが最初にきた。あらまぁ。utunbuもかよ。
apt-line に dapper のやつ追加して
sudo aptitude install libfreetype6 -t dapper
したら起動するようになった。