在iOS(iphone、ipad)上编辑、编译和运行c/c++(更新)
因为GCC在iOS上的种种问题,所以放弃了GCC采用Clang编译C/C++。
一、添加BigBoss源
一般cydia默认都带有BigBoss源,当然如果你删除了请添加回来,源地址:http://apt.thebigboss.org/repofiles/cydia/
二、安装LLVM+Clang、LD64和MTerminal

直接在cydia中搜索安装即可,注意LLVM+Clang文件会比较大。
三、导入头文件和链接库
iOS8的话可以点击这里下载,其他iOS版本没测试,理论上问题不太大。
将下载下来的压缩包放到iOS中的/var/root
目录下(实际上可以随便放,不过后面还要用到这个路径),用iOS中的iFile(如果没有请到cydia安装)对压缩包解压:
解压最后出现:返回值:0
则表示解压成功,在/var/root
目录下会出现usr
文件夹。
这时点击usr文件夹右边的感叹号图标,将访问权限全部修改为“读取,写入,执行”:
如果你有一台安装有XCode的Mac,可以到这里找到需要的文件夹:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/
最后的SDK选择自己需要的版本,压缩里面的usr文件。
四、设置Clang参数
因为Clang不会自带头文件和链接库,所以这里需要用参数指定,为了减小工作量直接写一个shell
脚本。
在电脑上新建一个文本文档(当然也可以直接在iFile中新建),内容如下:
#!/bin/sh
clang++ -I /var/root/usr/include/c++/4.2.1/ -I /var/root/usr/include/ -L /var/root/usr/lib/ -L /var/root/usr/lib/system/ $*
保存后去掉文件的.txt
后缀,命名为dpp
,将文件放到iOS中的/usr/bin
文件夹下,点击右边的感叹号图标,修改访问权限为“读取,写入,执行”:
五、编译并执行C++文件
这里可以在电脑上创建一个简单的.cpp
文件(我的文件名字为test.cpp
):C++
#include <iostream>
using namespace std;
int main(){
cout<<"Hello World!"<<endl;
}
将文件放到/var/mobile
文件夹下
打开MTerminal,输入:dpp test.cpp -o test
如果没出现错误就是编译成功,接下来运行编译后的文件:./test
就会得到:Hello World!
这样即完成了所有步骤。
下面是几点要说明的:
- 我在iOS6、iOS7、iOS8上均测试过能正常使用,一般不可能是LLVM+Clang和LD64的问题;
- 如果头文件和链接库文件(即
usr
文件夹)找不到对应的,可以参考这里去寻找; - 注意千万不要在Windows下解压usr.zip后再传至iOS,因为NTFS格式磁盘会破快链接文件的文件格式;
- 一定要注意复制进iOS的文件和解压的文件的权限问题,这里直接全部设为“读取,写入,执行”避免权限问题;
- 如果前面的usr路径和我的路径不同,注意要同时修改
shell
脚本中的参数; - 我的
shell
文件名为dpp
,这里可以自由修改,在Terminal中执行时对应就行; - 这个
shell
是用来编译C++的,若要编译C,只需要将其中的clang++
更改为clang
(可能后面的头文件参数路径也需要更改,我没有测试); dpp test.cpp -o test
中dpp
是我自定义的指定编译和头文件链接文件的命令,test.cpp
为需要编译的文件的文件名,-o test
为指定编译后文件的文件名,这里我指定为test
;./test
即为执行test
文件,这里的./
为当前目录,必不可少,不同于Windows可以直接test
。
配合Texiastic会有更好的效果,参考这里:iOS8:利用Textastic帮助在iPhone上编辑和编译C/C++文件
2 thoughts on “在iOS(iphone、ipad)上编辑、编译和运行c/c++(包括iPhone6和iOS8)”