在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..

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

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

14 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

Leave a Reply to derrick Cancel reply

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