是否可以使用兼容非Apple操作系统的LLVM IR / bitcode来定位iPhone?

时间:2012-12-03 18:24:00

标签: iphone objective-c gcc llvm clang

好的,抛开明显的打包和签名问题,是否可以通过使用来自非Apple操作系统(如Linux或Windows)的正确构造的LLVM bitcode(IR)来编译兼容IOS / iPhone的可执行文件,即通过利用开源编译器基础结构的某种组合,如LLVM,Clang或GCC?

基本上,我正在考虑的是

  1. 将预先存在的跨平台SDK(IOS兼容)编译为LLVM中间表示(IR / bitcode)。

  2. 使用LLVM分析工具分析并识别此层中特定于IOS的LLVM(IR)函数调用。

  3. 在非Apple系统上编译SDK到LLVM IR之后,在相应的LLVM IR功能中替换 Apple / IOS生成的LLVM-bitcode-SDK表示非Mac主机生成的呼叫。

  4. [可能]使用Mac的XCode / Clang / LLVM基础架构发出的构建标志,以便在非Apple主机编译机器(例如Linux或Windows)上构建兼容IOS的可执行文件)。

  5. 如果这完全可行,我稍后会调查iPhone / IOS捆绑的创建(记录IPA的构建,请求Google)并使用已经在其他地方使用的开源Apple代码签名例程跨平台的IOS SDK

2 个答案:

答案 0 :(得分:4)

RoboVM不支持从Mac OS以外的操作系统交叉编译iOS应用程序,但我们计划在将来支持该应用程序。这是一个在您可能感兴趣的Linux上运行的iOS交叉编译工具链:https://code.google.com/p/ios-toolchain-based-on-clang-for-linux/

答案 1 :(得分:3)

看起来RoboVM项目正在处理Java-to-IOS:

  

Java to Native

     

RoboVM编译器将Java字节码转换为本机ARM或x86   码。应用程序直接在CPU上运行。没有解释器或虚拟机   参与。

正如我的问题所示,它使用了LLVM。

同样值得注意的是Avian JVM项目。它可用于编译到本机和IOS二进制文件(通过捆绑JVM),但是,我不确定其用户界面(UI)层的状态或完整性。

这两个项目似乎都是当前不断发展的。