slコマンド for iPhone

以前、slコマンドを実行させたiPhoneのスクリーンショットを載せたことがあります。過去記事
今回はそのslコマンドの生成、実行についてです。
(環境を整えるのにそこそこ容量を使用するので余裕がある方のみ行ってください)


開発環境にあたって必要な状態はgccをインストールされていることです。
環境を整える方法はこちらから

それでは作業に入ります。
slコマンドの公式ページからソースをダウンロードしてきます。
公式ページ
ソース←直リンクです

中身を解凍
これをiPhone上でクロスコンパイルすれば実行できるのですがこのままではLinux用でコンパイルする子tができません。
SDK3.2をダウンロードします。
/var/内にtoolchainというフォルダを作成
この中にダウンロードしたsys32.tgzを入れiPhone上で解凍します
$ tar -xzvf /var/toolchain/sys32.tgz
その後、Makefileを以下のように編集します。

#==========================================
#    Makefile: makefile for sl
#==========================================

MINIMUMVERSION:=4.0.1

CC=arm-apple-darwin9-gcc

SDK=/var/toolchain/sys32
DEBUG=DEBUGOFF

LDFLAGS  = -lobjc
LDFLAGS += -framework UIKit
LDFLAGS += -framework CoreFoundation
LDFLAGS += -framework CoreGraphics
LDFLAGS += -framework CoreSurface
LDFLAGS += -framework Foundation
LDFLAGS += -framework GraphicsServices
LDFLAGS += -framework QuartzCore
LDFLAGS += -L"$(SDK)/usr/lib"
LDFLAGS += -F"$(SDK)/System/Library/Frameworks"
LDFLAGS += -F"$(SDK)/System/Library/PrivateFrameworks"
LDFLAGS += -bind_at_load
LDFLAGS += -multiply_defined suppress
LDFLAGS += -march=armv6
LDFLAGS += -mcpu=arm1176jzf-s

CFLAGS = -I"$(SDK)/usr/include"
ifeq ($(DEBUG),DEBUGOFF)
CFLAGS += -O0 -g0
else
CFLAGS += -g
endif
CFLAGS += -std=gnu99
CFLAGS += -Diphoneos_version_min=$(MINIMUMVERSION)
CFLAGS += -Wno-attributes -Wno-trigraphs -Wreturn-type -Wunused-variable
CFLAGS += -D$(DEBUG)

sl: sl.c sl.h Makefile
	$(CC) $(CFLAGS) $(LDFLAGS) -o sl sl.c -lncursesw

編集後、slフォルダを/var/root/に入れて、iPhoneからTerminalを起動
rootにログインして
$ cd sl
$ make


表示はおかしいですがバイナリは生成されているので大丈夫です。
また改造slなどもあり
SL
このサイトからpatchファイルをダウンロードできます。
iPhoneで行う場合はCydiaから”patch”と検索して
patchをインストールします。

slフォルダにパッチファイルを入れ
端末から
$ patch -p1 < ./sl3-2.patch (←パッチファイル名)
と実行

$ make
を行い
$ ./sl
と実行してみます

パッチは踏切登場版です
このようにiPhone上でコンパイルできるプログラムはほとんどがiPhoneで実行できます。
Makefileの修正などを行わないとコンパイルできないものも多いですが

iPhone JailbreakユーザーやC言語が得意な人には面白い実験だと思います。
容量と時間が余っている人は一度試してみるといいかもしれません

元(ソース):http://littlestrokes.orz.hm/mtosblog/2011/02/iphone4-sl-part2.html

コメントを残す

メールアドレスが公開されることはありません。