使GNU C编译器在iOS 6.x上运行

11

我有一个越狱(evasi0n)的第四代iPad,带有iOS 6.1固件。

通过Cydia,我安装了Mobile Terminal,版本号为520-2。
然后,按照这个教程的步骤,我下载并安装了CSU、链接标识编辑器、LibGCC、GCC和头文件/库。

在安装过程中没有出现任何问题。

该教程和项目更新时间分别为2012年2月15日和2012年2月18日,因此它们适用于iOS 5.x(我已在我的iPhone 4S上测试了该过程,iOS 5.1.1,它可以编译和在设备上执行C代码)。

但是,在iPad(iOS 6.1)的Mobile Terminal中,当我键入

$ gcc

我得到了

Illegal instruction: 4

我搜索了很多天,但我找不到关于iOS 6.x上的GCC的任何资料,因为有关它的最近一次讨论是在2012年10月12日更新的,而evasi0n越狱程序是从2013年2月4日开始可用的。

感谢任何帮助。

更新

从答案中看来,问题与iOS 6.x固件无关,而是与A6/A6X芯片有关,分别在iPhone 5和第四代iPad上。


你从哪里获取了 gcc?你使用的是哪个版本? - us2012
我已经编辑了问题,添加了一些可能有用的细节。 - user2043441
4个回答

6

部分软件需要重建以支持ARMv7s,其中之一是GCC。

要使用ARMv7重新编译,您必须使用-arch ARMv7选项运行GCC,并使用最新的SDK(6.0或6.1,我认为旧的SDK版本不能正常工作,但您可以尝试)。接下来,使用lipo创建一个fat binary,使其在多个架构上工作。

[此问题在官方iphone-gcc-full页面上] (http://code.google.com/p/iphone-gcc-full/issues/detail?id=6)


感谢Sergio提供完整详细的回复。为了重新编译软件,需要源代码,但在官方的_iphone-gcc-full_页面上并没有提供。那么项目的开发者应该重新编译吗? - user2043441
我希望 iphone-gcc-full 团队能够尽快重新编译它。另外,你可以尝试从官方 GCC 源代码构建自己的编译器,但我认为这并不简单... - Sergio

2
一些我的Cydia项目的用户遇到了相同的问题:“非法指令 4”。他们有iPad4和iPhone5(所有设备都已越狱iOS 6.1)。
我使用交叉编译器arm-apple-darwin gcc/g++版本4.2.1进行编译。
我始终使用CFLAGS='-O2 -mthumb'。
由于我无法访问Apple A6/A6X芯片的iOS设备(iPad4,iPhone5),因此无法进行任何测试:-(

感谢J.Anrugas的回复。关于您的答案,您使用了哪个设备?以及安装的固件是哪一个?因此,“非法指令:4”错误是由A6 / A6X芯片引起的,而不是iOS 6.x固件的原因吗? - user2043441
我使用过iOS 5.1.x和iOS 6.1的iPhone4、iPad2和AppleTV2,这两个固件都没有问题。我的Cydia项目的一些用户使用iOS 6.1的iPhone5和iPad4,但他们遇到了非法指令问题。 - J.Anrugas

1
请从以下链接获取适用于iPhone 5的新GCC。 下载

一个注释,我使用新的gcc编译代码时发现了一个错误。为了修复它,请执行以下补丁。sed -i'' 's/\x00\x30\x93\xe4/\x00\x30\x93\xe5/g;s/\x00\x30\xd3\xe4/\x00\x30\xd3\xe5/g;' hello hello是输出文件的名称。 - Ali
如果您不想每次编译代码时都打补丁,您必须替换 /usr/lib iPhone 文件夹中的 crt1.odylib1.o 以适应新 iOS。在下面的链接中,有人发布了所需的所有 lib 文件。下载链接在这里:http://www.mediafire.com/?kd2fuu7m1xdt3w8。 - Ali

0
尝试CppCode iOS应用——C/C++ IDE和编译器。无需越狱,无需互联网连接,免费(内购)。http://www.cppcode.info

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接