aamall

2010年12月03日

iPhone/iPod touchでC言語プログラミング(改訂2)

先日、hiroumauma君から仰々しい紹介をうけましたlevelfourです。

本当はそこまで大した人じゃないんです…。

 

それはともかく、twitterにてowlさんからiPodにて

プログラミングをする方法を知りたいということで、

折角の機会ですから記事にしてみることにしました。

 

以下の記事はjailbreak(脱獄)に関する記事です。

以降の操作を行って故障しても、当方では責任を負うことができません。

自己責任を持てない方はご遠慮ください。

 

※新しい補足情報です!

※おまけが追加されました!



「iPhone/iPod touchを脱獄しているのに大したメリットがない」

とお考えの方もいるでしょうか。

実は、脱獄をすればデバイス上でソースコードを編集し、

セルフコンパイルして実行することができるのです!

 

実際にはこのようになります。

IMG_0074

見事にテストプログラムが実行できていますね。

では、これから導入法を説明していきます。

再三注意しますが、この記事は脱獄をすすめているのではありません。

ある程度の知識を持ち、御自分で対処できる方が対象です。

脱獄の仕方については質問を受付いたしません。

Google等で検索すればすぐに出てきます。

 

0.準備

以下のパッケージはインストールされているものとします。

・iFile

・MobileTerminal

また、当方環境はiPod touch 3G FW 3.1.3で、

Spiritにてjailbreakしました。

他のFWでは動作は保証いたしません。

(恐らく動作しますが…)

 

1.Cydiaの提供パッケージの制限をなくす

Cydiaの初回起動時に、「Who are you?」というダイアログが

出てきたと思います。そこで3つのうち下の2つのいずれかを

選択した場合はgccがインストールできますが、

一般ユーザだとgcc等がインストールできません。

提供パッケージの制限をなくしましょう。

 

Cydiaの下部にあるタブでManage(管理)を選択します。

そして、左上にあるボタンを押して、変更します。

IMG_0071

最も下の開発者がよいでしょう。

 

2.libgccをインストールする

それはgccをインストールしましょう、といいたいところですが、

gccはlibgccというパッケージに依存しています。

しかも、gccはCydia標準リポジトリに入っているにも拘らず、

何故かlibgccは標準には入っていません。

下記のサイトからダウンロードします。

http://ipod-touch-max.ru/cydia/index.php?keyword=libgcc&cat=search#

 

その後、iPhone/iPod touchに転送し、

iFileで開いてインストールするなり、dpkgコマンドで

インストールするなりしてください。

 

3.Cydiaより必要パッケージをインストールする

以下のパッケージを検索してインストールします。

・GNU C Compiler

・iPhone 2.0 Toolchain

IMG_0072

 

IMG_0073

どちらともそれなりに時間がかかります。

プログラミングでもしながら気長に待ちましょう。

ちなみに、iPhone 2.0 ToolchainはC言語用の標準ライブラリ

です。

 

4.fake-libgccをインストールする

やっとコンパイルできる!と思ったところですが、

原因不明のリンカエラーが起こります。

ここでfake-libgccをインストールします。

下記サイトからダウンロードし、libgccと同様にインストールしてください。

http://files.dropbox.com/u/876743/fake-libgcc_1.0_iphoneos-arm.deb

 

5.必要ファイルを追加する

http://rapidshare.com/files/66800884/lib.rar

lib.rarをダウンロード、解凍します。

解凍パスワードはaksblog.co.nrです。

そして、下記の3つのファイルを/usr/libにコピーします。

・libgcc_s.1.dylib

・libSystem.dylib

・libsystem.B.dylib

 

6.お疲れ様です!

これで無事コンパイル可能となりました。

パソコンと同様に使うことができます。

なお、ソースファイルの編集は、iFile付属のテキストエディタを

使って行うか、viを使います。他にもテキストエディタがあるそうですが。

ただ、viはただでさえ癖が強いうえに、iPhone/iPod touchで

使うと[ESC]、[Ctrl]や[Tab]になれるのに結構時間がかかります。

また、viは標準インストールされていませんので、

使いたい方は手動でCydiaよりインストールしてください。

 

ちなみに、viにおいては

[ESC]…左上にスワイプ

[Ctrl]…右下にスワイプ

[Tab]…左下にスワイプ

となります。

 

 




#
# 補足情報
################


当初は僕のiPod touch 3G FW3.1.3でしか
テストをしていませんでしたが、
他の環境では別の手順が必要であることも
判明いたしました。

御協力いただいたowlさんとSONY5614さんに
感謝いたします。

まずは、SONY5614さんが御執筆になった
iPhone用の検証記事です。

そして、owlさんに提供していただいた
情報です。iOS4.0と4.1でのテストということです。
まずはこちらからsys32.tgzをダウンロードします。

中身を/var/toolchainに解凍します。
そして、以下のコマンドをMobileTerminalで実行
します。

$ su

Password: (パスワードを入力)

# cd /usr

# ln -s /var/toolchain/sys32/usr/include

# cd lib

# ln -s /var/toolchain/sys32/usr/lib/*

これでいけるそうです。

念のため、これらの操作を行って故障したとしても、
責任は負いかねますので、ご注意ください。


以上です。







[!]Linuxをはじめよう!の運営にご協力ください
こちらよりAmazonギフト券による支援を募集しております。

受取人のEメールに hirohorse2-suplbl(アットマーク)yahoo.co.jp を設定してください
少額でも非常に助かりますので、お気に召されました記事がありましたら、何卒ご支援の方よろしくおねがいします。



levelfour004 at 11:42│Comments(45)TrackBack(0) iPhone/iPod touch | プログラミング

トラックバックURL

この記事へのコメント

             
1. Posted by momo   2010年10月09日 15:21
1ゲト
2. Posted by てて   2010年10月09日 15:22
2げと
3. Posted by rr   2010年10月09日 15:22
3げと
4. Posted by Railgunist   2010年10月09日 15:29
Ipodtouchでソースファイルの編集ができるなんて驚きです!
参考にさせてもらいます!
5. Posted by windowくん   2010年10月09日 16:51
Lv4さん
記事おつかれさまです

自分はiPhoneとかもってないんで、よくわかりませんが… (~_~;)


これからも頑張ってください
6. Posted by hi_pet   2010年10月09日 19:26
<1<2<3 Lv4sにしつれいですよ~~

初記事お疲れさまです!
この機会にiphineに少し
手を加えてみようかとおもいましたw

おつかれでした!!
7. Posted by 番犬   2010年10月10日 00:55
5 僕は2年半くらい前からiPod touchを脱獄して弄ってましたが、まさかiPod touchでC言語プログラミングが出来るなんて知りませんでした!
最近C言語の勉強をしていて「iPod touchでもコンパイル出来たらいいのになぁ~」と思っていたところだったので丁度良かったです。
僕のブログでもこのことを書かせてもらいます。

これからも頑張ってください!
8. Posted by hi_pet   2010年10月10日 10:15
<1<2<3 Lv4sにしつれいですよ~~
9. Posted by 蒼い鳥@   2010年10月10日 20:22
Lv.4さん記事お疲れ様です!
このために、Ipod touchを購入しちゃいましたw

Lv4さんhiroumaumaさん記事楽しみにしてますよ!w
10. Posted by INDEX   2010年10月20日 22:23
僕は無線LANではないのですができますか?
11. Posted by levelfour   2010年10月21日 18:44
>>INDEXさん

質問の意図が明確でないので、
想像の範囲でお答えします。

無線LAN環境がないと
iPod touchは脱獄できても
Cydiaよりアプリがインストール
できません。
iPhoneならば、単体で3G回線が
使えるので、無線環境は不要です。

また、パソコンでjailbreakアプリを
ダウンロードすることは
原理的には可能なので、
その後脱獄済みデバイスに
転送してインストールすることは
可能です。
12. Posted by INDEX   2010年10月23日 21:01
>>levelfourさん

説明不足ですみません

つまり、脱獄ができても無線環境がないとipodでプログラミングはできないということなのでしょうか?
13. Posted by levelfour   2010年10月23日 21:20
>> INDEXさん

ただし、脱獄自体は無線環境が
なくてもできるので、脱獄後、
パソコンで必要なファイルを
火狐等のブラウザでリポジトリより
ダウンロードし、winならiFun-box、
MacならDiskAid(?)、Linuxなら
USB接続でそのまま転送すれば、
できないことはない、という
結論になりますね。
14. Posted by hiroumauma   2010年10月23日 22:57
>INDEXさん
簡単にまとめますと。。。

・iPod touchでのプログラミング自体には無線環境は必要ない

・ただし、プログラミングに必要なツールはインターネットからダウンロードする必要がある。

・ツールのダウンロードはipod touchで直接行うのが簡単だが、PC経由でダウンロードすることも不可能ではない。


ということになります。
INDEXさんの場合、まず、必要なツール(gccやtoolchain)をPCでダウンロードして、それをipod touchにUSB接続で転送し、iFileなどでインストールする。

と方法で行えば、無線環境がなくてもプログラミング用の環境を構築できます。
15. Posted by INDEX   2010年10月24日 13:14
>>levelfourさん・hiroumaumaさん

ふたりとも丁寧に説明してくださってありがとうございます

説明していただいたとおりやらせていただきます

16. Posted by SONY5614   2010年10月24日 19:48
iPod Touch 2G iOS4ではうまくいったんですが
iPhone 3GS iOS4.01では何度やってもコンパイルできませんね。
http://dl1.getuploader.com/g/sony5614_png_bmp/18/IMG_0001.PNG
17. Posted by INDEX   2010年10月24日 20:12
>>levelfourさん・hiroumaumaさん

すみません
必要なツール(gccやtoolchain)をDLしようと思ったのですが、どのサイトからDLすればいいのか分かりません。

教えてください
18. Posted by hiroumauma   2010年10月24日 20:47
>SONY5614さん
ライブラリが見つからないとのエラーです。おそらく使用しているバージョンが違うためです。

必要と思われる処理をスクリプト化しました。ただし僕はIpod touch,iPhone環境を持っていないのでテスト無しです。
よってこのスクリプトを動作させて発生したいかなる問題にも責任は終えませんが、それでもよろしければ中身をよく確認してから実行してください。

http://ux.getuploader.com/Begin_Linux/download/46/iPhoneSDK.sh
19. Posted by hiroumauma   2010年10月24日 20:58
>INDEXさん
記事の中の
 2.libgccをインストールする
で使用したサイトを使用すればいいのではないでしょうか?
なにか問題があるのでしょうか?
20. Posted by うわお   2010年10月24日 21:02
なんで持っていない環境に対する質問にもそんなに簡単に答えられるんですかwwwしかもスクリプトまで書けるってwなんか質問する側が虚しくなりますねwww
21. Posted by levelfour   2010年10月24日 21:49
>> INDEXさん
gcc、toolchainは公式もリポジトリに
入っています。
gcc: http://apt.saurik.com/
toolchain: http://apt.thebigboss.org/repofiles/cydia/

どの階層に入っているかまでは
把握していません。
22. Posted by SONY5614   2010年10月24日 22:29
>hiroumaumaさん

shありがとうございます。
使用する前にhiroumaumaさんがご存じな限りでよろしいので、質問にお答えできたらお願いします。

1.実行はrootでログインしてからの方がよろしいでしょうか?
2.このshを使用する際、環境は記事の内容を行ってからの方がよろしいですよね?(いろいろ自分でやってしまったので)

PS.テスト環境が無いとことでご存じではないかと思いますがiPhone/iPod Touchの端末(Terminal)は日本語表示不可です。shも日本語は文字化けしてしまいます。

>INDEXさん
話に割り込んですみません。
PCの環境がWindowsでしたらCydia2というソフトを使用するとリポジトリから直接debパッケージをダウンロードしてこれますよ
http://blogs.yahoo.co.jp/uparupa_x_aquos/25010001.html
23. Posted by hiroumauma   2010年10月24日 23:55
>SONY5614さん

おそらくrootでログインするのが望ましいです。実行前に必ず中身を確認してください。

処理としては
 1、まず保存されているライブラリにシンボリックリンクを貼り、iphone版のgccに認識可能にする。
 
 2,その後記事ではインストールしていない iphone-gcc を導入するう
というのが大まかな処理です。

記事の処理が済んでいればある程度弄っていても動作するはずです。。。

日本語の件ですが、たしかにそうですね。まぁ echo はスクリプトの動作とはあまり関係がないので勘弁してください。
24. Posted by SONY5614   2010年10月26日 00:14
>hiroumaumaさん

返答遅れました
試してみたのですが違ったエラーが発生しました
コードの間違いはないと思うのですが
http://dl1.getuploader.com/g/sony5614_png_bmp/19/IMG_0003.PNG
25. Posted by INDEX   2010年10月27日 21:10
>>levelfourさん・hiroumaumaさん・SONY5614さん

ありがとうございます。
無事インストールでき、コンパイルすることができました。
26. Posted by esion   2010年11月29日 21:08
iPhoneでc言語ができるということで導入を試してみました。
僕の環境はOS4.1の3gsですが、>>24と同じ状況になってしまいました。
やっぱり3gsでの導入は無理なんでしょうか?
27. Posted by SONY5614   2010年11月30日 20:46
>esionさん

iPhoneの場合、
記事に表記されているパッケージ以外に
iPhone OS C/C++ Compiler
が必要だったと思います。
libgccインストール後
GNU C Compiler
iPhone OS C/C++ Compiler
iPhone 2.0 Toolchain
の順にインストールしてみてください
その後、記事の4からやってみてください
28. Posted by チャン・チー   2010年11月30日 21:37
突然で申し訳ありません。
この記事を見て、iPod touchを購入し、全てインストール済みですが、mobileterminalを起動しようとすると、一瞬起動しますが、なぜかまたホーム画面にもどってしまいます。

なぜでしょう?助けてください。
29. Posted by hiroumauma   2010年12月01日 00:33
>チャン・チーさん
http://apple-voice.com/wordpress/2010/06/mobile-terminal-426-ios4-ipad32-word/

ここにそれらしい情報がありました。
試してみてください。
30. Posted by チャン・チー   2010年12月01日 23:42
>hiroumaumaさん

お返事ありがとうございます!

どうにかこうにかterminalは起動できました!
本当に助かりました。
ありがとうがざいます!
31. Posted by java厨   2010年12月04日 16:02
javaしか分からないんだけどC++勉強しようと思う
挫折とかしませんかね?
32. Posted by Sola   2010年12月07日 22:13
どうも初めまして

質問が在るのですが

>>以下のスクリプトを使えば、上記の作業を
行わなくてもsys32.tgzを/var/toolchainに
解凍するだけでコンパイルできます。

と記入されていますが
この作業はIOS 4.0~4.1環境での作業ですが?
また、GNU C Compiler
iPhone 2.0 Toolchain
導入後を前提として話しているのでしょうか?

回答がいただけば幸いです。

33. Posted by levelfour   2010年12月08日 18:09
>>Solaさん
明記されてないですね。申し訳ありません。
結果は仰る通りで、その2つを
インストールしなければなりません。
34. Posted by sakasakakunn   2011年01月08日 21:57
ios4.2.1のjailbreakってやっぱできませんよね。。。。。。
35. Posted by きんぎょ   2011年01月09日 19:55
Redsn0w 0.9.6rc8を使えば紐付きですが、脱獄できますよ。
僕はipod touch4G 4.2.1 で脱獄できました。
ただ、cydiaでは4.2に対応していないアプリもあるので完全脱獄が可能になるまで待ったほうがいいかもしれません(^^;;
http://kmjb-hackslife.com/redsn0w-0-9-6rc8/


36. Posted by sakasakakunn   2011年01月10日 15:03
jailbreakme3.0には期待してたのですが…
37. Posted by ZXT   2011年05月01日 17:15
IOS4.2でC言語プログラミングはできますか?

関係のないことですが、ステータスバーのバッテリーのパーセント表示や時計などのデジタル化はなんというツールを使っていますか?
38. Posted by ryou_j205   2011年05月10日 14:23
IOS 4.2.1でしっかりコンパイル出来ました!!
ZXTさんと同じで、記事にあるスクリーンショットのステータスバーのように時計や日付けなどの数字をデジタル化するツールは何というツールを使っているのですか?

回答いただければ幸いです。
39. Posted by levelfour   2011年05月11日 17:17
>>ZXTさん、ryou_j205さん
僕が当時やった方法はもう忘れてしまったので、
調べていて見つけた別の方法を書いておきます。
(当時はテーマのinfo.plistを直接書き換えてた気がするんですが…)

まず、Cydiaから「BytaFont」をインストールします。
これはデバイスのシステムフォントを変更できるアプリです。
続いて、下記のサイトからフォントをダウンロードします。

http://www.iphoneruler.net/2009/07/digital-7-font.html

そして、/var/mobile/Library/MyFontsにDLしたフォントを
入れるとBytaFontで変更できるようになるようです。

実機で試していませんのでできるかわかりませんが、
恐らく問題ないでしょう。

注意しておくと、この方法ではシステムフォント自体を変更するので、
ステータスバー以外もデジタル数字になります。
また、デフォルトのフォントに戻すときは
Cydiaから「Original Fonts」をインストールして
適用する必要があるようですね。
40. Posted by SONY5614   2011年05月11日 22:00
>>levelfourさん、ZXTさん、ryou_j205さん
話に割り込んですみません
Cydiaから「Digital 7 Font」と検索すればそのままBytaFontもいっしょにインストールできますよ
また、最新版のBytaFontはOriginalフォントが入っているので
下のタブからBasic->Restore original->Use BytaFont Backupでもとに戻せます
41. Posted by ryou_j205   2011年05月13日 22:43
一応できました!!
levelfourさん、 SONY5614、ありがとうございました。
やはり、ステータスバー以外もデジタルになりました。いろいろとおかしくなったのでもとにもどしました。
わざわざ調べてくだっさったのに、ごめんなさい
42. Posted by ryou_j205   2011年05月13日 22:46
↑↑SONY5614さん、さん、ぬけました。
すいません
43. Posted by Jupiter   2011年05月25日 20:12
最近PCが壊れてしまい、C言語をiPhoneの4.3.3で行ってるのですが、UIが使えるアプリは作れますか?
44. Posted by hosomi   2014年02月08日 07:16
はじめまして。
libsystem.B.dylib libSystem.dylib libgcc_s.1.dylib が404でダウンロードできなくてコンパイルできません。
locateで探してもない…(iPhone4S iOS7.0.4)
どこかで配布されてないものでしょうか?
45. Posted by いほなー   2014年02月08日 10:27
>hosomiさん

動作未確認につき自己責任
https://github.com/KimiChen/BackupSMS/tree/master/iOS/lib

コメントする

名前
URL
 
  絵文字
 
 
記事検索
最新コメント
月別アーカイブ