【问题标题】:Can GAS (GNU Assembler) compile to iPhone/iTouch?GAS (GNU Assembler) 可以编译成 iPhone/iTouch 吗?
【发布时间】:2011-04-03 22:50:25
【问题描述】:

我正在使用非官方的 Open SDK 为 iDevice 市场编写一些应用程序,但在 Windows 而不是 Linux 上安装开放工具链时遇到了困难(我会使用 Linux,但我不能在我的工作计算机上),所以我用 GNU Assembler (GAS) 对其进行编程。

GAS 是否可以将 iDevice 作为输出文件的格式?如果没有,是否有任何基于 Windows 或 Linux 的组装程序(最好是开源的)可以组装到 iPod touch 上?

【问题讨论】:

  • 如果这是在您的工作计算机上,我认为这是给您的雇主的。鉴于此,为什么你的雇主不能给你买一台不错的新 Mac Mini?为工作获取合适的工具。
  • 我比 Mac 更习惯 Windows/Linux,GAS 可以更灵活地移植现有应用程序。
  • 你可以在你的工作计算机上的Windows下运行的虚拟机中安装Linux吗?如果您的应用程序所针对的 iDevice 市场完全包括 iTunes App Store 分发(远超过美国 iDevice 市场的 90%),那么您需要在 Mac 上构建(构建在 BSD Unix 之上) , 和在 Linux 下工作没有太大区别)。

标签: iphone assembly gnu-assembler


【解决方案1】:

请注意,gcc 或 gas 不是生成 iOS 应用程序包的最后一步。在官方 Xcode 构建序列中,有链接、UniversalBinary 合并、打包和代码设计。因此,您可能需要在您选择的开发平台上运行的至少其中一些步骤的工具。

【讨论】:

    【解决方案2】:

    即使技术上可行,我也不愿从事这样的事业。您可能会面临大量问题,不仅涉及代码设计,还涉及应用商店的审批。 Apple 非常热衷于人们只使用他们的官方工具,并禁止使用任何交叉编译器等。如果他们发现您的应用是以您提议的方式创建的最轻微的暗示,他们很可能会拒绝它。

    即使他们可能不会 - 这是我不会承担的风险。想象一下开发工作流程,完成所有工作,解决所有代码设计和其他问题,然后苹果拒绝您的应用。

    习惯使用 Mac 并不难。在冒险之前至少尝试一下。

    【讨论】:

    • 请少提意见,你没有回答问题。
    • 想解释一下为什么在回答一个棘手的问题时没有发表意见的余地?此外,我的回答的实质与您认为正确的几乎相同,只是我的措辞不同。而且稍微不那么乐观——考虑到 OP 方法固有的困难,我认为这已经足够了。哦,我花了更少的时间提供不会改变这些困难的细节。即使您发现另一个答案更有帮助,这完全没问题,我认为您反应过度了。投反对票只是为了简单的错误答案。当然,这只是我的看法。
    • 问题是几乎没有答案,除了"if it is technically possible"这行是对问题的重述。本质上要成为可接受的答案,您只需要回答问题,“是”或“否”您甚至没有这样做,因此我的评论。
    • 所以你对我投了反对票,因为不是说“是的,但你不应该这样做”我只是暗示它可能 有可能继续我认为在这里真正重要的事情吗?挑剔,不是吗?
    • “可能”是不是的答案。问这个问题的人,因为它可能是可能的,他们想知道它是否是。如果您不知道“GAS 是否有可能以 iDevice 为目标”,您不应该回答这样的问题。我不会对进一步的 cmets 做出回应,因为这个论点对手头的问题没有建设性。
    【解决方案3】:

    从技术上讲,是的,您可以使用 GNU 工具链制作交叉汇编器甚至交叉编译器以针对 iPhone。神奇的是将正确的拱形字符串传递给 binutils 的“配置”。它应该是 --target=arm-apple-darwin 加上一个我不记得告诉 binutils 默认使用哪个 ARM 命令集的参数。所以制作一个交叉汇编器是可能的,甚至很难。

    但这只是一小步。您还需要一个可以处理 Mach-O 文件的链接器,但我不知道如何设置它。我知道有一个完整的工具链用于在 Linux 上交叉编译到 iPhone,使用原始的 Apple SDK,但使用自定义的交叉 gcc。但是,Apple 已经明确禁止使用交叉编译器,主要是为了禁止 Flash-to-iPhone 交叉编译器。此外,您需要对应用程序进行代码签名,我不知道是否有 OSS 工具可以做到这一点。

    正如其他人已经说过的,买一台 Mac Mini,也许是 eBay 上的二手。如果没有 Mac,您不会走得太远,即使您仍然想要,您首先需要了解有关为 iPhone 编译的深入知识,而您只能在 Mac 上获得这些知识。

    此外,您当然不希望没有良好的调试器、Instruments 和 Interface Builder,以便轻松调试、内存泄漏查找和 GUI 构建。如果没有 Interface Builder,您将需要完全手动编写 GUI 代码,这将花费您很多更多时间,而时间就是金钱。在很大程度上,很多书籍和方法对你来说毫无用处。总而言之,如果您尝试通过交叉编译来破解应用程序,您的公司将花费更多的钱,而不是为您提供一个漂亮的闪亮 iMac 以及开发时间。

    【讨论】:

      猜你喜欢
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-04
      • 1970-01-01
      • 2011-07-11
      • 2021-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多