首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Marmalade SDK的交叉编译器是如何工作的?

Marmalade SDK的交叉编译器是如何工作的?
EN

Stack Overflow用户
提问于 2012-09-11 03:36:51
回答 3查看 3.1K关注 0票数 6

Marmalade SDK是一个跨编译器、跨平台的框架,允许用户从Windows开发Iphone应用程序。Marmalade有一个交叉编译器,能够直接从本地windows计算机生成有效的签名IPA,而不需要Mac或远程构建服务。我知道一些“开放工具链”能够交叉编译应用程序,但这些工具链与Iphone许可不兼容。有人知道Marmalade的交叉编译器是如何工作的吗?marmalade是如何开发出与Iphone SDK许可兼容的交叉编译器的?他们使用什么编译器来交叉编译?他们是否使用开源编译器并对其进行了定制?它们如何与与Iphone许可兼容的“可移植操作系统包装器”相链接?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-17 04:24:49

Marmalade就像一个虚拟操作系统。

它会生成针对Marmalade、ARM或x86的代码,因此在Windows上创建的代码针对的是Marmalade,并且对iOS一无所知。

Marmalade代码不能直接调用OS。它只能调用EDK扩展。

EDK扩展为Marmalade提供了接口,并在一系列平台上实现: iOS、安卓、Windows等

Marmalade为每个平台提供了加载器。加载器加载适用于iOS、安卓、Bada和其他ARM平台的Marmalade代码

iOS loader是由iOS上的Marmalade团队编写的闭源编译对象。

iOS和iOS Loader的EDK扩展是在Mac上的XCode中编译的。

票数 5
EN

Stack Overflow用户

发布于 2012-09-16 20:34:40

我所知道的是Marmalade使用GCC compiler将代码编译成ipa。在部署构建时,Marmalade使用Marmalade certificates文件夹中的certificateskeysDrMop解释了使用来自Marmalade的密钥和来自苹果的provisioning portal的配置文件生成证书的过程。

Deploy tool中,所有的bin文件、编译的扩展、证书和配置都合并并归档到ipa文件中。我不认为Marmalade已经公开了ipa创建技术。

票数 2
EN

Stack Overflow用户

发布于 2012-09-20 20:18:20

我对Marmelade并不特别熟悉,但是在生成iOS代码方面并没有太多的专有技术。LLVM/Clang和GCC都是开源的编译器环境,因此任何人都可以在几乎任何平台上用objective C编译ARM代码。然而,SDK必须存在,才能包含头文件和链接它们的框架。

最后的代码签名过程就是简单的代码签名。所以,只要你准备好了你的Apple ID和代码签名密钥,它就是可行的。

所有这一切的复杂性就像在X平台上运行交叉编译器来编译Y平台上的代码一样。复杂性可能是找出应用程序包周围文件的细节,如Entitlements.plist、代码签名的确切格式等。因此,从技术上讲,这可以在任何平台下完成。如果它实用或易于维护,则完全是另一回事。

当然,其他选择可以是简单地使用虚拟机,然后使用您自己的字节代码在此虚拟机中运行。如果我没记错的话,开发者许可协议可能会排除这一点,但如果该条款具有法律效力,那就另当别论了。我知道一些打破这一规则的例子,比如C64或Atari游戏模拟器(它们毕竟是模拟那些机器的原始CPU,所以这是一个完美的虚拟机例子)。

我的建议是,如果你做任何严肃的IOS开发,那就在Mac上做吧。其他任何事情都意味着在遇到麻烦的情况下,你将得不到任何支持,而且很难找到正确的答案。因此,你最终会浪费更多的时间,而不是花更多的时间去购买一台mac (同时也可以是你的windows和linux机器),在Xcode上做同样的事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12358323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档