《iOS 三问》 -- iOS 系统的交叉编译
本教程主要是记录怎样在 iPhone 越狱手机上,由 c 源码或 oc 源码编译出来命令行程序并运行之。
为什么我们要自己手动编译源码并在越狱 iPhone 手机上执行?
- 用于研究使用,方便我们剖析 Mach-o 结构程序及其方面的知识;
- 方便我们自己制作工具为平时工作提供便利;
- 等等(暂时还没想到,哈哈
@_@
)
PS: 后面有空的话我可以会补充下怎样直接在 iPhone 上安装 Vi+Clang 自己实现代码的编辑加编译~这样就可以直接在手机端操作了,敬请期待。
1 总述
iOS 系统的交叉编译主要分以下几步:
- 源码编写;
- 编译;
- 签名;
- 推送 iPhone 及运行
2 源码编写
下面直接给个最简单的源码,C & OC 的。
1 |
|
1 |
|
3 编译
这里要注意的是,要根据您的 iPhone 型号选择 CPU 型号,我这里是 iPhone6,使用 arm64。
C 编译
1 | xcrun -sdk iphoneos clang -arch arm64 -o test test.c |
OC 编译,与 C 差不多,注意带上链接时用到的库
1 | xcrun -sdk iphoneos clang -arch arm64 -o test test.m -framework Foundation |
4 签名
1 | ldid -S test |
5 推送 iPhone 及运行
然后将程序使用 scp 命令拷到 iPhone 上,并直接运行之就可以了。
1 | scp ./test root@IP:/bin |
6 引用
【1】王孟发 - mac 和 iPhone 命令生成可执行文件的区别
【2】小鱼周凌宇 - iOS攻防——(一)ssh登陆与交叉编译