在 iOS 上使用 gcc 编译 C/C++ 文件

来源:互联网 发布:东华软件财报 编辑:程序博客网 时间:2024/05/21 15:05

http://bbs.weiphone.com/read-htm-tid-1663675.html

Linus Yang原创教程
t.sina.com.cn/linusyang

论坛上ipod4g的文章
http://bbs.weiphone.com/read-htm-tid-758205.html
http://bbs.weiphone.com/read-htm-tid-803479.html
详细介绍如何在iOS上搭建平台,进行开发,操作步骤较多,不易掌握。

而本文中,我将部分关键的头文件和动态链接库事先打包好,简化安装步骤,并且最终也不是要进行完整的iPhone开发,仅仅能保证编译、运行、调试基本的C/C++程序,可以进行简单的命令行编程,较为实用。

1、下载:
包含gcc和gdb完整安装包的下载地址:(已包含头文件)
http://u.115.com/file/f3cb3f7778

单独下载打包好的头文件。(上面一个要是下载了,就不用下载这个了。
1.1版:(提取自iOS SDK 4.2)   headfile_1.1_iphoneos-arm.deb (2298 K) 下载次数:184
1.0版:(提取自iPhone OS SDK 3.0)   headfile_1.0_iphoneos-arm.deb (2435 K) 下载次数:52
注:如果设备还在运行iPhone OS 3.0,而且用1.1版头文件包编译不通过的,就试试这个1.0版的头文件包:
在Cydia中找到"Include head files",卸载掉,再安装1.0版。

2、安装:
解压后,将文件传到设备上,安装文件夹内所有deb包即可。
具体可以用以下三种方法:

引用
方法一:(推荐)
预先安装好OpenSSH,利用WinSCP(Windows)或Terminal(Unix)以root身份登录你的设备,进入目录,使用
复制代码
  1. dpkg -i *.deb
命令安装所有安装包。

方法二
预先安装好MobileTerminal,利用 su root 命令改为root用户,再进入目录,使用
复制代码
  1. dpkg -i *.deb
命令安装所有安装包。
注:如使用iOS4和iPad,请不要安装Cydia源自带的Terminal,可以安装这个:
MobileTerminal_520-1

方法三
使用iFile,进入目录,安装所有的包。(可以忽略返回值不是0的问题,依赖包已经全部包含进来了。)



至此,gcc和gdb已经安装完成,可以直接开始编译了!

3、编译运行:
第一步
,可以使用任何文本编辑器,比如用GoodReader/QuickOffice/iFile甚至Cydia中提供的Vim编写源代码,扩展名可以为.c或.cpp,然后再放到指定目录编译,比如/var/mobile。

第二步,使用OpenSSH或MobileTerminal登录设备(无需root帐户,mobile用户即可),输入如下命令:
先转到工作目录:

复制代码
  1. cd /var/mobile


对于c语言:

复制代码
  1. gcc hello.c -o hello
  2. ./hello


对于c++:

复制代码
  1. g++ hellop.cpp -o hellop
  2. ./hellop



这时候就可以看到运行结果了。

补充:
若此时仍无法运行,请给程序数字签名后再运行,比如:

复制代码
  1. gcc hello.c -o hello
  2. ldid -S hello
  3. ./hello


因为现在大多数越狱都给内核打了补丁,就不需要ldid数字签名这一步了,所以4.1,4.2.1越狱后的设备都可以省略这一步。

4、有关调试:
编译的时候加入-g参数,比如

复制代码
  1. gcc -g hello.c -o hello

即可用gdb调试,具体调试方法,可以参阅相关gdb的资料。这里我就不详述了。

已在iOS 4.1(limera1n)/iOS 4.2.1(Pwnage4.2自制固件)/ARMv7的环境下测试通过。
转载请注明出处,欢迎各位跟帖回复讨论!

原创粉丝点击