在iPad上写代码并用GCC编译

对于不想折腾就像体验一下用iPad敲敲代码的同学来说, 蓝牙键盘 + 一个叫textastic的带语法高亮的文本编辑器app就能满足你的需求

iPad十几个小时的续航和轻薄的体型, 再加上才买了蓝牙键盘, 实在是让我不能不想用它来写代码. 下面介绍我在iPad上最终成功运行Vim和编译运行代码的经验.

想要运行代码肯定首先要破解.. 苹果的销售策略里, app是不能运行脚本的, 就是说不能运行任何自定义的程序.

Apple is acting as a gatekeeper for what is and isn’t allowed on your device. I heard that Apple would never allow a scripting language to be installed on your iPad because it would allow end users to run code that they hadn’t verified.

摘自 http://jjinux.blogspot.com/2010/05/apple-ipad-and-emacs.html

越狱我就不多嘴了, 假设你已经越狱, 并且假设你的iPad是免费的 >=P

我的系统是3.2.2, 3系列的应该不会有问题, 4往上可能需要不同的fake-libgcc(我下面有提, 我觉得就是把系统环境伪装成2.0的系统从而让针对2.0系统开发的iphone-gcc可以工作)

获取终端

在cydia首页可以找到openSSH的下载链接, 下载&安装后, iPad就启动了SSH service.  装一个叫iSSH的app, 在iPad上运行Terminal的原理就是连接本地的SSH, 并不是底层破解 🙂 root的密码默认为alpine.

安装GNU GCC

根据 这篇文章, 但是此文是针对2.0系统的, 我3.0系统就纠结了很久, 最终整理如下:

1. 用一个叫fake-libgcc的玩意来做一些动态链接, 让3.0的系统可以iphone-gcc(本来2.0能用), 我上传到了这里. 可以下到电脑上然后通过ssh通道发送到iPad的 /var/, 当然也可以用iPad终端直接wget下载(需要在cydia里安装wget).

接着安装大便包

dpkg -i fake-libgcc_1.0_iphoneos-arm.deb

2. 安装iphone-gcc

apt-get install iphone-gcc
(cydia安装貌似和终端apt-get是一样的)

安装库文件

先谈一谈我对这一团乱麻的理解: 首先我们编译代码需要用的是GNU GCC, 安装的iphone-gcc显然是非官方开发的, 然后库文件是苹果提供的iPad SDK中的. 因为iphone-gcc是针对2.0系统开发并且没有后续更新, 它需要用到的一些文件在后面的iOS中位置变了, 所以需要fake-libgcc来做一些链接从而使其能正常工作.  下面我们装的库文件也要手动做一些动态链接.

1. 先下载文件, 网上找的 “3.2 SDK (iPad) 头文件 147.1MB” 太大了, 因为这是完整的SDK, 我们现在就用到lib文件夹, 我拎出来上传了, 点这里下载GCC用头文件for iPad 3.2, 解压到iPad的 /usr/lib/ 下, 替换什么的无所谓..

2. 然后需要做一些动态链接, 让GCC能找到这些lib.
先删除 libstdc++.dylib, libSystem.dylib, 这两个本来也是动态链接, 但是我用的时候不对, 先删了再分别建立libstdc++.6.0.9.dylib, libSystem.B.dylib这两个文件的动态链接. 命令为:

cd /usr/lib/
ln -s libstdc++.6.0.9.dylib libstdc++.dylib
ln -s libSystem.B.dylib libSystem.dylib

应该就可以了

关于Editor

可以apt-get install vim, 嘿嘿, 我本来更愿意用emacs, 但是没有for for A4 processor的系统的Emacs, 只有个叫mg的东西, 看wiki这个东西还挺牛逼, 精简版的Emacs, 已经有24年的历史.. 并且现在还成为了OpenBSD的一部分. 就是我用了一会觉得实在不习惯, 好多快捷键都不一样, 并且在蓝牙键盘+iSSH的环境下频繁按Ctrl还是挺郁闷的 (对了iSSH一定要用4.5.1以后的, 不然不识别蓝牙键盘的Ctrl). 并且这个系统上开发的还不稳定, 经常出错/崩溃.. 所以对VIM顿生好感, 所有系统上都有, 稳定, 牛逼啊, 虽然比较变态就是了.. 对了但是Esc还不好按, 应该可以解决..

还有选择就是类似textastic这种app.. 文件存在/Application/什么什么下面, 自己locate一下就好

未完待续

刚买iPad就像在上面编译代码, 弄弄没激情了, 今天蓝牙键盘到了又来兴趣整了整, 晚上终于Hello World了很开心, 先记一下.
还有很多东西没弄, 比如gdb..

本文很多地方是学习了这个贴子, 我更注重记录自己的理解, 不至于下捣鼓不知道干了什么. 如果有同学对于细节不清楚怎么操作的话可以看下那个帖子.

本文年代久远.. 几个月前写了一点, 可能有出错的地方, 谁能指出的话非常感谢:)

16 thoughts on “在iPad上写代码并用GCC编译

  1. alan

    HI 高手,
    我一直困扰于蓝牙键盘的ESC键无法使用的问题,你是否有什么可以解决方法,教教我。

    PS:现在在IPAD上用VIM很是不爽。

    Reply
  2. Viaxl Post author

    hi~~

    我在文中有写 iSSH一定要用4.5.1以后的
    有新功能 键盘映射之类的
    可以用command + ‘+’ (好像是) 的组合键实现ESC..

    可以加我QQ63724878 🙂

    Reply
  3. derrick

    1. 先下载文件, 网上找的 “3.2 SDK (iPad) 头文件 147.1MB” 太大了, 因为这是完整的SDK, 我们现在就用到lib文件夹, 我拎出来上传了, 点这里下载GCC用头文件for iPad 3.2, 解压到iPad的 /usr/lib/ 下, 替换什么的无所谓..

    能再求份lib文件么–谢谢
    还有我做到这步,选择替换后,,,,,pad变砖了–哭了

    Reply
    1. Viaxl Post author

      版本不同就不要替换了吧.. 捂脸
      你确定你的系统是古老的3.2么, 如果是的话下载链接我弄好了~ 否则就再去google吧 =D

      Reply
      1. derrick

        显然不是-,-好吧。。。就是不知道该怎么弄了><。。。。有空再钻研一下

        Reply
  4. Hait

    Hi Viaxl,
    我在IPAD+外接键盘用VIM的时候感觉按键的重复速度太慢了,比如在hjkl移动的时候,不知道你有没有什么好的解决办法呢?先谢过了

    Reply
    1. Viaxl Post author

      是terminal里慢还是VIM慢?搜搜看怎么改这个变量吧,我也不清楚 =_=
      比如X server是 xset r rate 250 120

      Reply
  5. Hait

    其实terminal和VIM都慢,只不过terminal没太多重按键的需求也就忍了……
    我继续搜~~

    Reply
    1. Viaxl Post author

      加油~
      另:兄台要不要来玩minecraft… =_= 网页最上面有我服务器的introduction, 对就是那个用漂亮的颜色标出来的 =D

      Reply
  6. Appliance Repair Guides

    First off I would like to say superb blog! I had a quick question which I’d like to ask if you don’t mind. I was interested to find out how you center yourself and clear your thoughts before writing.I have had a difficult time clearing my mind in getting my ideas out there.I truly do take pleasure in writing but it just seems like the first 10 to 15 minutes are

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *