- 2009-01-24 (土)
- 未分類
-
![]()
Cydiaにunzipはあるけど、lhaはないよなぁと常々不満に思っていたのですが…ひとりぶろぐのmoyashiさんが「歩きながらnkfをセルフコンパイルした。」とおっしゃっていたのを伺い、「そうか自分でやればよいのか」とやってみた。試行錯誤の手順メモです。
前置き
- この記事を書いている人間の理解が足りません。手順に誤りがある可能性があります。
- とりあえず簡単そうなiPhone上でのセルフコンパイルにしました。でも、フラッシュドライブ上でのコンパイルはちょっと気持ち悪い感じがします。余裕がでてきたらクロスコンパイル環境を作ることにします。
手順メモ
試行錯誤をそのまま載っけておきます。明記しない限りiPhone上(母艦からSSH)での作業です。
iPhone ToolChain2.0の導入
CydiaからiPhone ToolChain2.0をインストールします。実際はそれだけじゃ足りないのですが…とりあえず先に進みます。
LHa for UNIXを入手。
LHa for UNIX – SourceForge.JPを使わせて頂くことにします。
wget http://osdn.dl.sourceforge.jp/lha/22231/lha-1.14i-ac20050924p1.tar.gz
tar xvfz lha-1.14i-ac20050924p1.tar.gz
なにはともあれconfigure(1回目)
とりあえずconfigureしてエラーを見ながら対応を考えていくことに。
cd lha-1.14i-ac20050924p1
./configure
checking whether the C compiler works… configure: error: cannot run C compiled programs.で止まった。config.logを見ると…
configure:2278: checking whether the C compiler works
configure:2284: ./a.out
./configure: line 2285: 1877 Killed ./$ac_file
a.outを実行できなくて止まっているみたいです。
iPhoneのコード署名チェックを無効化
Bypassing iPhone Code Signatures – saurik.com
iPhoneのコード署名チェックを無効化するか擬似署名しないと、独自のコードは動かないとのこと。
sysctl -w security.mac.proc_enforce=0
sysctl -w security.mac.vnode_enforce=0
※iPhone再起動すると元に戻っちゃいます。
configure(2回目)
./configure
configure: error: C preprocessor “/lib/cpp” fails sanity checkって怒られた。config.logを見てみるとstdio.hなど基本的なヘッダーすらなくて怒ってらっしゃる。
iPhone SDKの入手
Toolchain 2.0 – theiphonewiki.comを見ると、iPhone SDKからヘッダーファイルを持ってこいと言うのでそうする。
ここは母艦で作業しました。
- iPhone DevCenter(要登録-無料)からiPhone SDK for iPhone OS 2.2 (updated 11/20/2008)をダウンロード。iphone_sdk_for_iphone_os_2.2_9m2621_final.dmg 1.55GB
- HFSExplorerをダウンロードしてインストール。
- ダウンロードした.dmgをHFSExplorerで開いて、iPhoneSDKHeadersAndLibs.pkgを抽出する。
- iPhoneSDKHeadersAndLibs.pkgをSCPでiPhone上にコピー
ヘッダーファイルの設置
Toolchain 2.0 – theiphonewiki.comの手順を参考にヘッダーファイルを設置する。
xar -xf iPhoneSDKHeadersAndLibs.pkg Payload
zcat Payload | cpio -id '*.h'
rm -rf Platforms/iPhoneOS.platform/Developer/Library
mkdir include
mv Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.sdk/* .
rmdir -p Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.sdk/
mv System/Library/Frameworks/* .
rmdir -p System/Library/Frameworks/
mv AddressBook.framework/Headers include/AddressBook
mv AddressBookUI.framework/Headers include/AddressBookUI
mv AudioToolbox.framework/Headers include/AudioToolbox
mv AudioUnit.framework/Headers include/AudioUnit
mv CFNetwork.framework/Headers include/CFNetwork
mv CoreAudio.framework/Headers include/CoreAudio
mv CoreFoundation.framework/Headers include/CoreFoundation
mv CoreGraphics.framework/Headers include/CoreGraphics
mv CoreLocation.framework/Headers include/CoreLocation
mv Foundation.framework/Headers include/Foundation
mv MediaPlayer.framework/Headers include/MediaPlayer
mv OpenAL.framework/Headers include/OpenAL
mv OpenGLES.framework/Headers include/OpenGLES
mv QuartzCore.framework/Headers include/QuartzCore
mv Security.framework/Headers include/Security
mv SystemConfiguration.framework/Headers include/SystemConfiguration
mv AVFoundation.framework/Headers include/AVFoundation
mv UIKit.framework/Headers include/UIKit
rmdir -p *.framework
mv usr/include/* include/
rm -rf usr/lib
rmdir -p usr/include/
rm Payload
cp -r include/* /usr/include/
rm -rf include/
configure(3回目)
./configure
またエラー。config.logを見ると/usr/include/libkern/arm/OSByteOrder.h:8:20: error: stdint.h: No such file or directoryとのこと。あれ、stdint.hがない?
探してみる。
#find /usr/include/ -name stdint.h
/usr/include/gcc/darwin/4.0/stdint.h
とりあえずリンクを張ってみる。
ln -s /usr/include/gcc/darwin/4.0/stdint.h /usr/include/stdint.h
configure(4回目)
./configure
こんどこそ成功。
make
makeしてみると…
Makefile:317: warning: overriding commands for target `lha-test’
Makefile:190: warning: ignoring old commands for target `lha-test’
とwarningはでるけど成功。PATHの通った所にコピーし、擬似署名をしておく。
cp src/lha /usr/bin/lha
ldid -S /usr/bin/lha
実験
母艦上で作ったLZHファイルで実験。
lha -x sample.lzh
きちんと解凍できました!
日本語ファイル名は化けるけど…文字コード展開周りのコンパイルオプションないかそのうち探す。
雑感
これで添付ファイルがLZHのメールが来ても、iPhoneだけでどうにかできる!(実用性は乏しいので非常用?)
欲しいツールを自分でコンパイルできるのは嬉しいなぁ。
クロスコンパイル環境も作ってみたいですが…今日はここまで。
Comments:2
- k 09-01-28 (水) 21:12
-
自作すばらしいですね。メカなら自作しますが;;;
私は見ても、まったくもって意味不明で判りませんがTT
自分でコンパイルできたら楽しいでしょうねー
応援してます楽しく毎日みてます^^。 - goodegg 09-01-29 (木) 0:30
-
>k san
私もなんのこちゃだか半分わからずに書いているので…
豊富なUnix系ツールが利用できるのはiPhoneの魅力ですね!
Trackbacks:1
- トラックバックURL
- http://iphone.goodegg.jp/archives/3055/trackback
- Listed below are links to weblogs that reference
- iPhone 2.0 ToolchainでLha for Unixをセルフコンパイル from iPhone.goodegg.jp
- pingback from 1月がもう終わるということは… iPhoneニュースと世相ナナメ読み 2009年1月27日 ver 1.0 : AppBank ~ iPhone, iPod Touch 09-01-27 (火) 6:25
-
[...] rewards the lazy 1月20日でおそらく累計106831DL i Wrote a top 10 app….and its shit iPhone 2.0 ToolchainでLha for Unixをセルフコンパイル – iPhone.goodegg.jp かっちょいいなぁ [...]






