ホーム > 未分類 > iPhone 2.0 ToolchainでLha for Unixをセルフコンパイル

iPhone 2.0 ToolchainでLha for Unixをセルフコンパイル

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からヘッダーファイルを持ってこいと言うのでそうする。
 
ここは母艦で作業しました。

  1. 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
  2. HFSExplorerをダウンロードしてインストール。
  3. ダウンロードした.dmgをHFSExplorerで開いて、iPhoneSDKHeadersAndLibs.pkgを抽出する。
  4. 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の魅力ですね!

Comment Form
名前とメールアドレスを記憶する

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 かっちょいいなぁ [...]

ホーム > 未分類 > iPhone 2.0 ToolchainでLha for Unixをセルフコンパイル

サイト内検索
更新情報
オススメなモノ
iPhoneアプリケーションガイド あのAppBankが全面協力! iPhoneアプリ本の決定版! 実は私も書いてます!! 500日まとめが屁の突っ張りにもならない超絶な内容。
iPhone Style Book OS 3.0対応版 新規ユーザーにも既存ユーザーにもオススメのiPhone使いこなし本。ちょこちょこ入るTipsが憎い逸品。
AppleコンポジットAVケーブル MB129LL/B 写真と動画再生をTVに出力。実はかなりオススメ。レビュー記事はこちら
MiniRizer pocked-sized Gadget Stand 1,800円前後と安くはないけど持ち運びできる使い勝手の良いiPhoneスタンド。レビュー記事はこちら。
SANWA SUPPLY PDA-STN2W 1,000円前後で買える安いスタンド。レビュー記事はこちら
クリアジャケットケースセット for iPhone 3G/3GS 絶滅危惧種コレクション  動物園やら宴会やらのおともに最適なクリアケース。500日まとめ(アクセ編)でもご紹介しています。
KINGJIM デジタルメモ「ポメラ」 DM10シロ 愛用中の旧型ポメラ。この下の持ち運び可能iPhoneスタンドと組み合わせてこんな感じで愛用中。旧型はだいぶ安くなりました。
Hi-FiヘッドセットA2DP片耳型 ST03 片耳でもステレオで音楽が聞けるBluetoothヘッドセットです。レビュー記事はこちら。
eyeMobile コンバーションレンズシリーズ 超広角レンズがオススメです。簡単に面白い絵作りができます。狭い部屋での集合写真とかも。レビュー記事はこちら
Griffin Clarifi Case For iPhone 3G マクロレンズ付き マクロレンズは結構使えます。ただ裸iPhoneに比べると...だいぶ厚い。レビュー記事はこちら
パワーサポート エアージャケットセット for iPhone 3G Clear PPK-71 薄くてオススメなケース。悩んだらまずこれ。液晶保護シートもクリスタルとアンチグレア付いてきます。レビュー記事はこちら 液晶保護フィルム単品もオススメです。クリスタル(コレが好き!)とアンチグレアがあります。
ブログパーツ
あわせて読みたいブログパーツ

 フィードメーター - iPhone.goodegg.jp
キーワード
相互リンク

Return to page top